注册 登录
编程论坛 VFP论坛

求助:如何抓取网络特定数据,如中行外汇牌价里即时更新汇率数据

igaoyuan 发布于 2023-01-10 11:29, 978 次点击
经常用到汇率计算,每次需要到中行外汇牌价查询,手动输入最新牌价后计算,是否能够抓取某个特定数值能,比如下列网址的美元与人民币汇率
https://www.
只有本站会员才能查看附件,请 登录


查看页面源代码,没有明显的定位查找条件
只有本站会员才能查看附件,请 登录


希望自动抓取红框内数值,不知大佬会用什么办法?
谢谢!
5 回复
#2
sdta2023-01-10 11:39
文本下载后,提取相关文本字符串,用alines()提取相关数据
#3
sdta2023-01-10 14:38
程序代码:
CLEAR
lcWb = "美元"
lcWb1 = STRCONV(STRCONV(lcWb, 9), 15)
LOCAL lcToUTF8
* 转换为UTF8编码
lcUTF8 = ""
FOR ln = 1 TO LEN(lcWb1) STEP 2
    lcUTF8 = lcUTF8 + "%" + SUBSTR(lcWb1, ln, 2)
ENDFOR
* 下载网页数据
oHTTP = CREATEOBJECT("MSXML2.ServerXMLHTTP") &&MSXML2.XMLHTTP/WinHttp.WinHttpRequest.5.1/MSXML2.ServerXMLHTTP/Microsoft.xmlhttp
oHTTP.Open("POST", "https://srh./search/whpj/search_cn.jsp", .F.)
OHTTP.SETREQUESTHEADER("Content-Type", "application/x-www-form-urlencoded")
lcSend = "erectDate=&nothing=&pjname=" + lcUTF8 + "&head=head_620.js&bottom=bottom_591.js"

oHTTP.Send(lcSend)
IF oHTTP.Status = 200
    lcStr = oHTTP.ResponseText
    ALINES(laStr, STREXTRACT(lcStr, "<tr>", "</tr>", 3), 4+1)
    * 显示中行折算价
    ? lcWb + "中行折算价: " + SUBSTR(laStr[11], 5)
ENDIF
#4
igaoyuan2023-01-10 15:27
回复 3楼 sdta
感激之情无以言表!!!
大佬,您的代码简单高效,敬礼!感谢!
#5
sdta2023-01-10 16:02
或者改为
程序代码:
IF oHTTP.Status = 200
    lcStr = oHTTP.ResponseText
    ALINES(laStr, lcStr, 4+1)
    * 显示中行折算价
    ? lcWb + "中行折算价: " + SUBSTR(laStr[172], 5)
ENDIF
#6
igaoyuan2023-01-10 17:37
回复 5楼 sdta
少用一个函数达到同样效果!
1