注册 登录
编程论坛 VFP论坛

想下这个网站数据,完全搞不定啊,有没有哪位大能帮帮?

ZHUHQ2020 发布于 2022-07-15 14:07, 3196 次点击
想下这个数据到VFP,翻了以前有关的帖子,完全看不懂语句含义!,彻底搞不定。
http://data.
有没有哪位大能帮帮?

只查出来对应链接:
 "http://data.。  对应第一页
http://data.  
用/page/2..../page/6 的变化对应第二到第六页
22 回复
#2
吹水佬2022-07-15 17:13
对应链接可以打开
#3
ZHUHQ20202022-07-15 20:44
是啊,就是不知道怎么下。,看了以前的有关帖子,完全搞不懂语句的作用。
#4
nbwww2022-07-16 10:26
CLEAR
SET DELETED ON     
SET SAFETY OFF
oXml = CreateObject("MSXML2.XMLHTTP")
cUrl = "http://data.
oXml.Open("GET", cUrl, .F.)
oXml.Send()

lcText=STRCONV(oXml.ResponseBody, 2)
STRTOFILE(lcText,'temp1.txt')
CREATE CURSOR aa (a c(200),b c(30),c c(30))
APPEND FROM 'temp1.txt' TYPE DELIMITED
DELETE ALL FOR  AT('<td class=',A)=0
REPLACE ALL b WITH STREXTRACT(aa.a,'>','<',1)
REPLACE ALL b WITH IIF(LEN(STREXTRACT(aa.a,'>','<',2))>0,STREXTRACT(aa.a,'>','<',2),b)
GO TOP
BROWSE


#5
nbwww2022-07-16 10:40
"http://data.
地址需要做个循环自己替换一下
#6
吹水佬2022-07-16 15:10
以下是引用ZHUHQ2020在2022-7-15 20:44:49的发言:

是啊,就是不知道怎么下。,看了以前的有关帖子,完全搞不懂语句的作用。

可以打开就可以取页面的东东
只有本站会员才能查看附件,请 登录

程序代码:
ie = CREATEOBJECT("internetexplorer.application")
page = 0
DO WHILE .t.
    page = page + 1
    ie.Navigate("http://data./market/xsjj/field/enddate/order/desc/ajax/1/free/1/page/"+TRANSFORM(page)+"/free/1/")
    DO WHILE ie.Busy OR ie.ReadyState!=4
        ?? " 请稍候 ...... "+TRANSFORM(page),TIME()+0h0D
        INKEY(1)
    ENDDO
    IF VARTYPE(ie.document)!="O"
        LOOP
    ENDIF
    tbody = ie.document.getElementsByTagName("tbody").[0]
    IF tbody.rows.length == 0
        EXIT
    ENDIF
    IF page==1
        thead = ie.document.getElementsByTagName("thead").[0]
        cmd = ""
        FOR EACH th IN thead.rows[0].cells
            fieldName = STRTRAN(th.innertext, 0h0D0A,"")
            fieldName = STRTRAN(fieldName,"%","%")
            cmd = cmd + "," + fieldName + " c(20)"
        ENDFOR
        cmd = "CREATE CURSOR tt (" + SUBSTR(cmd,2) + ")"
        EXECSCRIPT(cmd)
    ENDIF
    FOR EACH row IN tbody.rows
        cmd = ""
        FOR EACH cell IN row.cells
            cmd = cmd + ",'" + cell.innertext + "'"
        ENDFOR
        cmd = "INSERT INTO tt VALUES (" + SUBSTR(cmd,2) + ")"
        EXECSCRIPT(cmd)
    ENDFOR
ENDDO
ie.quit()
SELECT * FROM tt
#7
schtg2022-07-16 16:45
回复 6楼 吹水佬
高!学习啦,谢谢!
#8
schtg2022-07-16 16:53
回复 4楼 nbwww
好!学习啦,谢谢!
#9
ZHUHQ20202022-07-16 17:48
首先郑重感谢断大和吹大的援手!回复来迟,是因为我在尝试时全都提示错误,一直在搜索相关提示内容和解决办法,可惜。
首先依据断大的提示尝试后结果:
只有本站会员才能查看附件,请 登录


其次:依据吹大提示尝试结果:
只有本站会员才能查看附件,请 登录


我用的是WIN10 VFP9
浏览器先前用的EDGE(就是WIN10主推的),后来尝试改为IE11同样没用。然后......

继续搜索、学习中......
#10
sdta2022-07-16 18:12
程序代码:
CREATE CURSOR ths (序号 C(4), 股票代码 C(6), 股票简称 C(20), 限售解禁日期 C(10), 本期解禁数(股) C(20), 最新价 C(10), 解禁股市值(元) C(20), 占总股本比例(%) C(6), 是否为实际值 C(2))
FOR lns = 1 TO 6
    lcUrl = "http://data./market/xsjj/field/enddate/order/desc/ajax/1/free/1/page/" + TRANSFORM(lns) + "/free/1/"
    lcText = GETURL(lcUrl)
    IF EMPTY(lcText)
        MESSAGEBOX("网络错误......")
        RETURN
    ENDIF
    lcText = STREXTRACT(lcText, "        <tbody>" + CHR(13)+CHR(10), "                 </tbody>")
    ALINES(laText, lcText, 5, "<tr >" + CHR(13)+CHR(10), "<!", '<tr class="even">' + CHR(13)+CHR(10))
    FOR ln = 2 TO ALEN(laText) STEP 2
        ALINES(laStr, laText[ln])
        INSERT INTO ths VALUES (STREXTRACT(laStr[1], ">", "</td>"),;
                            STREXTRACT(laStr[2], ">", "</a></td>", 2),;
                            STREXTRACT(laStr[3], ">", "</a></td>", 2),;
                            STREXTRACT(laStr[4], ">", "</td>"),;
                            STREXTRACT(laStr[5], ">", "</td>"),;
                            STREXTRACT(laStr[6], ">", "</td>"),;
                            STREXTRACT(laStr[7], ">", "</td>"),;
                            STREXTRACT(laStr[8], ">", "</td>"),;
                            STREXTRACT(laStr[9], ">", "</td>"))
    ENDFOR
ENDFOR
BROWSE
RETURN



FUNCTION GETURL(UrlName)
    lcStr = ""
    oHTTP = CREATEOBJECT("WinHttp.WinHttpRequest.5.1")
    oHTTP.Open("GET", UrlName, .F.)
    oHTTP.SetRequestHeader("hexin-v", "A9h0LUHLDmk4dCLttBje8OMjqQ1lwT1XnicQyhLJJW7EKXZxutEM2-414Fth")
    oHTTP.Send()
    IF oHTTP.Status = 200
        lcStr = oHTTP.ResponseText
    ENDIF
    RELEASE oHTTP
    RETURN lcStr
ENDFUNC


[此贴子已经被作者于2022-7-16 18:22编辑过]

#11
nbwww2022-07-16 20:11
学习
#12
吹水佬2022-07-16 20:34
回复 10楼 sdta
如果从未用浏览器打开过应该无效
这个Cookie有时限,过期也可能无效
#13
吹水佬2022-07-16 20:40
以下是引用ZHUHQ2020在2022-7-16 17:48:04的发言:

首先郑重感谢断大和吹大的援手!回复来迟,是因为我在尝试时全都提示错误,一直在搜索相关提示内容和解决办法,可惜。
首先依据断大的提示尝试后结果:

其次:依据吹大提示尝试结果:

我用的是WIN10 VFP9
浏览器先前用的EDGE(就是WIN10主推的),后来尝试改为IE11同样没用。然后......

继续搜索、学习中......

首先,是不是代码书写有误。
其次,试试先关闭所有浏览器再运行。
#14
sdta2022-07-16 21:12
以下是引用吹水佬在2022-7-16 20:34:25的发言:

如果从未用浏览器打开过应该无效
这个Cookie有时限,过期也可能无效

我也发现有时限限制
#15
ZHUHQ20202022-07-17 08:25
回复 10楼 sdta
感谢援手!您这个我尝试了,前边尝试的时候GETURL()函数不认,后边再尝试,Lctext未能提取到数据。直接跳错误提示了。原因我就搞不明白了。再次感谢!
#16
ZHUHQ20202022-07-17 08:31
回复 4楼 断续器
实在不好意思,刚复查发现是我完全复制了您的贴文,其中的()和“”是全角的,当然无法运行,改了以后发现数据提取成功!至于分解数据和循环还能搞定。再次感谢。

[此贴子已经被作者于2022-7-17 08:45编辑过]

#17
ZHUHQ20202022-07-17 08:43
回复 13楼 吹水佬
吹版:感谢持续关注!不愧大神,拒腐蚀,有必须赞一个! 抱赚此前心急了,有不当之处还请原谅。

再次感谢吹水佬、断续器、sdta的无私援助和众坛友的关注。




[此贴子已经被作者于2022-7-17 09:35编辑过]

#18
sdta2022-07-17 08:45
以下是引用ZHUHQ2020在2022-7-17 08:25:39的发言:

感谢援手!您这个我尝试了,前边尝试的时候GETURL()函数不认,后边再尝试,Lctext未能提取到数据。直接跳错误提示了。原因我就搞不明白了。再次感谢!

13、14楼有提示
#19
ZHUHQ20202022-07-17 08:53
回复 18楼 sdta
一般都是直接复制贴文,所以书写错误不可能吧?关闭网页试了,时限也在用重新刷新试了,搞不定。五十多的人了,学习能力不够,急功尽利,见笑了。
#20
sdta2022-07-17 09:02
实在不行,将要下载的内容手工复制到TXT文件中,再解析需要的内容。
#21
nbwww2022-07-17 09:16
以下是引用ZHUHQ2020在2022-7-17 08:53:14的发言:

一般都是直接复制贴文,所以书写错误不可能吧?关闭网页试了,时限也在用重新刷新试了,搞不定。五十多的人了,学习能力不够,急功尽利,见笑了。

代码上传后好象自动变全角了
#22
ZHUHQ20202022-07-17 09:34
回复 20楼 sdta
有道理,昨天都想下个免费爬虫了!  但这不在坛里看见各种直接下,心痒吗?不试试总是不甘心。
#23
aqyejun2022-07-19 09:24
实在是高
1