爬蟲的基本套路,你知多少?
有什麼作用?
通過有效的爬蟲手段批量採集數據,可以降低人工成本,提高有效數據量,給予運營/銷售的數據支撐,加快產品發展。
業界的情況
目前互聯網產品競爭激烈,業界大部分都會使用爬蟲技術對競品產品的數據進行挖掘、採集、大數據分析,這是必備手段,並且很多公司都設立了的崗位
合法性
爬蟲是利用程序進行批量爬取網頁上的公開信息,也就是前端顯示的數據信息。因為信息是完全公開的,所以是合法的。其實就像瀏覽器一樣,瀏覽器解析響應內容並渲染為頁面,而爬蟲解析響應內容採集想要的數據進行存儲。
反爬蟲
爬蟲很難完全的制止,道高一尺魔高一丈,這是一場沒有硝煙的戰爭,碼農VS碼農
反爬蟲一些手段:
合法檢測:請求校驗(useragent,referer,介面加簽名,等)
小黑屋:IP/用戶限制請求頻率,或者直接攔截
投毒:反爬蟲高境界可以不用攔截,攔截是一時的,投毒返回虛假數據,可以誤導競品決策
... ...
爬蟲基本套路
基本流程
目標數據
來源地址
結構分析
實現構思
操刀編碼
基本手段
簡單的驗證碼可以使用識圖讀驗證碼第三方庫
請求帶上用戶cookie信息
請求頭設置,如:useragant為有效客戶端
控制請求頻率(根據實際情景)
IP代理
簽名/加密參數從html/cookie/js分析
破解請求限制
破解登錄授權
破解驗證碼
解析數據
正則匹配(根據情景使用)
轉 JSON/XML 對象進行解析
正則匹配,通過的正則表達式來匹配想要爬取的數據,如:有些數據不是在html 標籤里,而是在html的script 標籤的js變數中
使用第三方庫解析html dom,比較喜歡類jquery的庫
HTML Dom解析
數據字元串
python爬蟲
python寫爬蟲的優勢
python語法易學,容易上手
社區活躍,實現方案多可參考
各種功能包豐富
少量代碼即可完成強大功能
涉及模塊包
請求
多線程
正則
json解析
html dom解析
操作瀏覽器
實例解析
鬥魚主播排行
目標數據
獲取排行榜主播信息
來源地址
https://www.douyu.com/xxx
xxx=房間號
https://www.douyu.com/directory/rank_list/game
[排行榜地址]
[主播房間地址]
結構分析
獲得排行數據介面:https://www.douyu.com/directory/rank_list/game
獲得主播房間信息數據
參數確認(去掉不必要參數)
cookie確認(去掉不必要cookie)
模擬請求(charles/fiddler/postman)
發現$ROOM是主播房間信息,在頁面的script標籤的js變數中,可使用正則工具寫表達式去匹配
通過抓包[排行榜地址],[主播房間地址](谷歌調試network/charles/fiddler)
實現構思
通過請求[主播排行介面]獲取[排行榜數據]
[排行榜數據]中有主播房間號,可以通過拼接獲得[主播房間地址]
請求[主播房間地址]可以獲得[$ROOM信息],解析可以獲得主播房間信息
操刀編碼
申明:此例子僅作為爬蟲學習DEMO,並無其他利用
基於python實現爬蟲學習基礎demo
編輯 | 碼哥
圖片源於網路,版權歸原作者所有
※都怪鹿晗?國產手機即將全線漲價!
※如何在30秒內猜中另一半手機密碼?
※14個超級牛X的免費開源小工具,快來用ta!
※我去,玩吃雞還能物理作弊!
※看完谷歌的發布會,黑科技來襲 手撕蘋果了嗎?
TAG:程序員之家 |