编程论坛
注册
登录
编程论坛
→
VFP论坛
求助:如何抓取网络特定数据,如中行外汇牌价里即时更新汇率数据
igaoyuan
发布于 2023-01-10 11:29, 978 次点击
经常用到汇率计算,每次需要到中行外汇牌价查询,手动输入最新牌价后计算,是否能够抓取某个特定数值能,比如下列网址的美元与人民币汇率
https://www.
只有本站会员才能查看附件,请
登录
查看页面源代码,没有明显的定位查找条件
只有本站会员才能查看附件,请
登录
希望自动抓取红框内数值,不知大佬会用什么办法?
谢谢!
5 回复
#2
sdta
2023-01-10 11:39
文本下载后,提取相关文本字符串,用alines()提取相关数据
#3
sdta
2023-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
igaoyuan
2023-01-10 15:27
回复 3楼 sdta
感激之情无以言表!!!
大佬,您的代码简单高效,敬礼!感谢!
#5
sdta
2023-01-10 16:02
或者改为
程序代码:
IF
oHTTP.Status
=
200
lcStr
=
oHTTP.ResponseText
ALINES(laStr, lcStr,
4
+
1
)
*
显示中行折算价
? lcWb
+
"中行折算价: "
+
SUBSTR(laStr
[
172
]
,
5
)
ENDIF
#6
igaoyuan
2023-01-10 17:37
回复 5楼 sdta
少用一个函数达到同样效果!
1