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

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