注册 登录
编程论坛 VFP论坛

如何获取网页中的内容

hytizj023 发布于 2023-03-17 20:46, 1636 次点击
只有本站会员才能查看附件,请 登录


我圈起来的,是期号,试机号,奖号(我只需要这几个数据)

请教如何用VFP获取指定网页上的内容
我要做一个彩票软件,我想直接采集新浪彩票的数据,所以我想到了直接抓取新浪的数据,因为新浪不会倒闭,所以采他们的数据是稳定的。
他们网站是固定的数据(每次只加载50条数据),所以我只需要采集最后一排的,就是今天的开奖号,用来做我的更新,我想实现自动更新!
下面是网址:
https://match.lottery.
那位大佬帮帮忙,给点代码
最好给点注释,本人没写过这类似的程序,基础不是很好,还需要消化!非常感谢!
12 回复
#2
csyx2023-03-17 21:45
url = 'https://match.lottery.'
oHttp = NewObject('Msxml2.XMLHTTP')
oHttp.open('GET', url, .f.)
oHttp.send()
cc = oHttp.responseText
cc = StrExtract(cc, '<tbody id="cpdata">', '</tbody>')
nn = Occurs('</tr>', cc)
cc = StrExtract(cc, '<tr', '</tr>', nn)
? StrExtract(cc, '<td>', '</td>', 1)
? StrExtract(cc, '<td class="fen">', '</td>', 1)
? StrExtract(cc, '<td class="fen">', '</td>', 2)
? StrExtract(cc, '<td>', '</td>', 2)
#3
sdta2023-03-17 22:00
楼主的问题应该没说清楚吧
#4
sdta2023-03-17 23:05
程序代码:
CLEAR
url = 'https://match.lottery.'
oHttp = NewObject('Msxml2.XMLHTTP')
oHttp.open('GET', url, .f.)
oHttp.send()
cc = oHttp.responseText
cc = STREXTRACT(cc, '<tr>', '</tr>', 50)
= ALINES(la, cc, 5)
? STREXTRACT(la[1], '>', '<')
? IIF("title="$la[3], STREXTRACT(la[3],">","<",2), STREXTRACT(la[3],">","<",1))
? IIF("title="$la[5], STREXTRACT(la[5],">","<",2), STREXTRACT(la[5],">","<",1))



[此贴子已经被作者于2023-3-17 23:12编辑过]

#5
hytizj0232023-03-18 09:50
以下是引用sdta在2023-3-17 23:05:39的发言:

CLEAR
url = 'https://match.lottery.'
oHttp = NewObject('Msxml2.XMLHTTP')
oHttp.open('GET', url, .f.)
oHttp.send()
cc = oHttp.responseText
cc = STREXTRACT(cc, '<tr>', '</tr>', 50)
= ALINES(la, cc, 5)
? STREXTRACT(la[1], '>', '<')
? IIF("title="$la[3], STREXTRACT(la[3],">","<",2), STREXTRACT(la[3],">","<",1))
? IIF("title="$la[5], STREXTRACT(la[5],">","<",2), STREXTRACT(la[5],">","<",1))

多谢版主,你最理解我了
你能不能解释一下,这个程序,我也好学习一下,之后我还得去抓其他内容,不能每次都来求助吧!
#6
sdta2023-03-18 09:57
每个网站文本在网页中显示格式各不相同,提取方法也不同。因此关键问题在于对VFP基础知识掌握的程度,只有有了扎实的基本功,才能处理好自己的日常需求。
#7
hytizj0232023-03-18 10:35
以下是引用sdta在2023-3-18 09:57:32的发言:

每个网站文本在网页中显示格式各不相同,提取方法也不同。因此关键问题在于对VFP基础知识掌握的程度,只有有了扎实的基本功,才能处理好自己的日常需求。

网站我是懂的,麻烦你解释一下吧!谢谢!大概解释一下,我就应该明白了
oHttp.send()
cc = oHttp.responseText
cc = STREXTRACT(cc, '<tr>', '</tr>', 50)
= ALINES(la, cc, 5)
? STREXTRACT(la[1], '>', '<')
? IIF("title="$la[3], STREXTRACT(la[3],">","<",2), STREXTRACT(la[3],">","<",1))
? IIF("title="$la[5], STREXTRACT(la[5],">","<",2), STREXTRACT(la[5],">","<",1))
大概执行过程,是不是把网站源码读取到内存,然后再去判断取值,我自我认为是这样的,不知道对不对

[此贴子已经被作者于2023-3-18 10:38编辑过]

#8
sdta2023-03-18 10:45
参照VFP帮助把代码中的函数研究一下。
#9
hytizj0232023-03-18 10:48
以下是引用sdta在2023-3-18 10:45:55的发言:

参照VFP帮助把代码中的函数研究一下。

好的,谢谢!
#10
hytizj0232023-03-31 22:19
大神版主,能不能帮我,改一下程序,现在换成这个网址https://zst.
我研究了一下,没弄明白
CLEAR
url = 'https://match.lottery.'
oHttp = NewObject('Msxml2.XMLHTTP')
oHttp.open('GET', url, .f.)
oHttp.send()
cc = oHttp.responseText
cc = STREXTRACT(cc, '<tr>', '</tr>', 50)
到了这里,我就没弄懂了,不知道怎么取出来了,研究了半天也没弄明白!
= ALINES(la, cc, 5)
? STREXTRACT(la[1], '>', '<')
? IIF("title="$la[3], STREXTRACT(la[3],">","<",2), STREXTRACT(la[3],">","<",1))
? IIF("title="$la[5], STREXTRACT(la[5],">","<",2), STREXTRACT(la[5],">","<",1))
麻烦帮我改一下,我只要    期号  试机号  号码
新浪更新了,没得试机号了,无奈我也只有换网站,感谢!
#11
sdta2023-04-01 00:44
解析网页文本1152行(分析这段文本的特点),如何获取应该会吧
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2023-4-1 09:26编辑过]

#12
hytizj0232023-04-01 12:30
以下是引用sdta在2023-4-1 00:44:50的发言:

解析网页文本1152行(分析这段文本的特点),如何获取应该会吧

就是不会
能不能帮我搞个,像头次那样的,可以获取30期的,这个网站是30期数据,原来新浪是50期数据

[此贴子已经被作者于2023-4-1 12:32编辑过]

#13
sdta2023-04-01 13:21
程序代码:
CLEAR
url = 'https://zst.'
oHttp = NewObject('Msxml2.XMLHTTP')
oHttp.open('GET', url, .F.)
oHttp.send()
cc = oHttp.responseText
cc = STREXTRACT(cc, '<tbody id="pagedata">', '    <!-- END -->')
cc = STREXTRACT(cc, "<tr id='tr29'", "<td  class='z_bg_05'>")
? STREXTRACT(cc, "<td class='z_bg_05'>", "</td>", 2)
? STREXTRACT(cc, "<td class='z_bg_05'>", "</td>", 3)
? STREXTRACT(cc, "<td class='z_bg_13'>", "</td>")
1