大家好,我是郭立員~
這兩天群友接了一單定製腳本的活,採集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 loginDim arr=shanhai.RegexFind(login,"<li class=""ball_.-"">(.-)</li>")For Each k In arr TracePrint kNextDim haoma=shanhai.RegexFind(login,"出球順序:.-<td>(.-)<")TracePrint haoma(0)還有一點需要注意的,網站編碼是GB2312,所以HttpPost命令的code需要修改一下,否則網頁中漢字部分會出現亂碼。

----------------------------------