本文主要介紹,想做一個python爬蟲工程師,或者也可以說是,如何從零開始,從初級到高級,一步一步,需要掌握哪些知識和技能。
初級爬蟲工程師:
- Web前端的知識:HTML, CSS, JavaScript, DOM, DHTML, Ajax, jQuery,json等;
- 正則表達式,能提取正常一般網頁中想要的信息,比如某些特殊的文字,鏈接信息,知道什么是懶惰,什么是貪婪型的正則;
- 會使用re, BeautifulSoup,XPath等獲取一些DOM結構中的節點信息;
- 知道什么是深度優先,廣度優先的抓取算法,及實踐中的使用規則;
- 能分析簡單網站的結構,會使用urllib或requests庫進行簡單的數據抓取;
中級爬蟲工程師:
- 了解什么是Hash,會使用簡單的MD5,SHA1等算法對數據進行Hash以便存儲;
- 熟悉HTTP,HTTPS協議的基礎知識,了解GET,POST方法,了解HTTP頭中的信息,包括返回狀態碼,編碼,user-agent,cookie,session等;
- 能設置User-Agent進行數據爬取,設置代理等;
- 知道什么是Request,什么是Response,會使用Fiddler, Wireshark等工具抓取及分析簡單的網絡數據包;對於動態爬蟲,要學會分析Ajax請求,模擬制造Post數據包請求,抓取客戶端session等信息,對於一些簡單的網站,能夠通過模擬數據包進行自動登錄;
- 對於比較難搞定的網站,學會使用瀏覽器+selenium抓取一些動態網頁信息;
- 並發下載,通過並行下載加速數據抓取;多線程的使用;
高級爬蟲工程師:
- 能使用Tesseract,百度AI, HOG+SVM,CNN等庫進行驗證碼識別;
- 能使用數據挖掘的技術,分類算法等避免死鏈等;
- 會使用常用的數據庫進行數據存儲,查詢,如Mongodb,Redis(大數據量的緩存)等;下載緩存,學習如何通過緩存避免重復下載的問題;Bloom Filter的使用;
- 能使用機器學習的技術動態調整爬蟲的爬取策略,從而避免被禁IP封號等;
- 能使用一些開源框架Scrapy, Scarpy-Redis,Celery等分布式爬蟲,能部署掌控分布式爬蟲進行大規模的數據抓取