按键精灵抓取窗口后台数据(伪装成浏览器采集网页数据)
大家好,我是公众号3分钟学堂的郭立员~
这两天群友接了一单定制脚本的活,采集500网的开奖数据,具体细节我没问,通过问我的问题,我猜猜采集的数据可能是这个:
采集的目标网址:https://kaijiang.500.com/shtml/ssq/03001.shtml
遇到的问题是啥呢?
使用按键直接获取网页源码得到的结果是这样的:
TracePrint url.get("https://kaijiang.500.com/shtml/ssq/03001.shtml")
当前脚本第1行:<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>
返回的结果是301重定向(并不是报错),无法获取到网页的html源码,我用浏览器自带的抓包调试工具看了一下,也没有跳转到别的网址,猜测是网页为了限制爬虫采集,做了一个假的跳转。
因为浏览器可以正常访问页面,所以想到的方法就是伪装成浏览器获取网页源码。
说是伪装,其实就是在http请求头里面加上User-Agent参数,很多做过抓包协议的人都懂的。
这个文章就这么一个知识点,直接上源码:
Import "shanhai.lua"
Dim uri = "https://kaijiang.500.com/shtml/ssq/03001.shtml"
Dim hader = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) Apple WebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"
Dim date1 = {"url":uri,"code":"gb2312", "cookie":"", "header":{"User-Agent":hader}}
Dim login = Url.HttpPost(date1)
TracePrint login
Dim arr=shanhai.RegexFind(login,"<li class=""ball_.-"">(.-)</li>")
For Each k In arr
TracePrint k
Next
Dim haoma=shanhai.RegexFind(login,"出球顺序:.-<td>(.-)<")
TracePrint haoma(0)
还有一点需要注意的,网站编码是GB2312,所以HttpPost命令的code需要修改一下,否则网页中汉字部分会出现乱码。
=正文完=
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。