一、背景介紹
近期有需求需要抓取微信小程序中的數(shù)據(jù)分析,與一般的網(wǎng)頁爬蟲類似,主要目標(biāo)是獲取主要的URL地址進(jìn)行數(shù)據(jù)爬取,而問題的關(guān)鍵在于如何獲取移動(dòng)端request請求后https加密的參數(shù)。本文從最初的抓包到獲取URL、解析參數(shù)、數(shù)據(jù)分析及入庫等,一步步進(jìn)行微信小程序的數(shù)據(jù)爬取。
此次爬取的目標(biāo)是微信小程序“財(cái)神股票”中的已受理科創(chuàng)版公司名單數(shù)據(jù),如下:
注:抓包、分析、爬取等全過程幾乎通用于微信小程序,可以類似的爬取其他小程序測試,原理大同小異。
二、環(huán)境配置
具體的環(huán)境配置參考:Python爬取微信小程序(Charles)
移動(dòng)端:iPhone;
PC端:Windows 10;
軟件:Charles
注:網(wǎng)絡(luò)要求較高,請確保網(wǎng)絡(luò)訪問無限制。
三、Charles抓包
Charles相關(guān)的配置與說明在此前的一篇文章(?Python爬取微信小程序(Charles))中有詳細(xì)說明,此間不再贅述,強(qiáng)調(diào)一點(diǎn)就是 移動(dòng)端證書確保始終信任狀態(tài) :
1. 設(shè)置移動(dòng)端網(wǎng)絡(luò)代理;
2. 打開Charles,關(guān)閉Windows proxy;
3. 打開微信小程序,Charles提示如下說明正常連接:
4. 點(diǎn)擊微信小程序后,在Charles中顯示如下:
5. 為了避免過度鏈接干擾,點(diǎn)擊清除按鍵,清理后,點(diǎn)擊“科創(chuàng)版專題”,Charles抓取鏈接如下:
6.?點(diǎn)擊https://nujump.tigerobo.com,在右端contents中可以看到請求的詳細(xì)內(nèi)容(為什么是這個(gè)鏈接而不是別的?我也是一個(gè)個(gè)點(diǎn)開嘗試的…)。
7.?在右側(cè)的overview中,可以看到URL的value: https://nujump.tigerobo.com/HB_Jumper/ztjump.ashx?topic=8&aris_data=kcb_1_announced_corp&pageIndex=1&pageSize=5
看到這個(gè)鏈接有木有很熟悉的感覺呢?Method對應(yīng)的值是GET,也就是說此鏈接是通過GET方法進(jìn)行獲取與展示數(shù)據(jù),在主鏈接 https://nujump.tigerobo.com/HB_Jumper/ztjump.ashx 后采用key與value拼接的方式發(fā)送請求,最后兩個(gè)參數(shù)pageIndex=1與pageSize=5,對應(yīng)第一個(gè)頁面展示的5條數(shù)據(jù),在Charles右側(cè)的contents中,下方選擇JSON Text,可以看到對應(yīng)返回的response如下:
此處的 ”count”: 110 對應(yīng)目前共有110條與科創(chuàng)版公司相關(guān)的數(shù)據(jù)。
8.?在拿到overview中的目標(biāo)URL之后,直接修改pageSize的值為110,在瀏覽器中訪問鏈接: https://nujump.tigerobo.com/HB_Jumper/ztjump.ashx?topic=8&aris_data=kcb_1_announced_corp&pageIndex=1&pageSize=110 后顯示如下:
此數(shù)據(jù)即為小程序中展示的數(shù)據(jù),也就是我們此次爬取的對象。
四、數(shù)據(jù)分析及入庫
拿到目標(biāo)URL后,可以采用python的requests庫進(jìn)行數(shù)據(jù)爬取:
詳情代碼此間不再贅述,完整代碼參考GitHub:
https://github.com/lixj-zj/Python/blob/master/Spider/WeChatData/getWechatDataSimple.py
注:
- 數(shù)據(jù)清洗的過程中,剔除了港股股票;
- 通過爬取東方財(cái)富網(wǎng)獲取每家上市公司的股票代碼,詳情參考GitHub代碼;
- 上市公司與科創(chuàng)版公司的對應(yīng)關(guān)系為多對多的關(guān)系,即一家上市公司可能對應(yīng)多家科創(chuàng)版公司,一家科創(chuàng)版公司可能對應(yīng)多家上市公司;
- 由于科創(chuàng)版公司目前暫無股票代碼等詳細(xì)信息,故數(shù)據(jù)的存儲(chǔ)方式采用上市公司對應(yīng)科創(chuàng)板公司的方式存儲(chǔ),具有一定的冗余;
- 由于目前所有的數(shù)據(jù)均存在變化(如新加科創(chuàng)版公司、上市公司又與新的科創(chuàng)版公司相關(guān)聯(lián)、科創(chuàng)版公司又與新的上市公司相關(guān)聯(lián)等),所以最好每次都清空之前的數(shù)據(jù),不要只在之前數(shù)據(jù)的基礎(chǔ)上新增。
五、問題總結(jié)
1. 小程序內(nèi)容加載緩慢或網(wǎng)絡(luò)異常:
???????? 在測試時(shí),發(fā)現(xiàn)Charles獲取一些財(cái)經(jīng)類小程序(新聞聯(lián)播、財(cái)神行情等)均顯示正常,抓包等也無問題,但是對于一些電商小程序(京東購物、當(dāng)當(dāng)?shù)龋苿?dòng)端有時(shí)候可能會(huì)顯示網(wǎng)頁打不開或無法加載,經(jīng)測試發(fā)現(xiàn)與網(wǎng)絡(luò)關(guān)系較大,可能由于網(wǎng)絡(luò)本身的原因、移動(dòng)端代理設(shè)置等問題導(dǎo)致。
六、參考鏈接
https://blog.csdn.net/HeyShHeyou/article/details/90045204
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
