- 常用網絡數(shù)據(jù)爬取方法
urllib
正則表達式
Beautiful Soup
Selenium
Scrapy
Lxml - 常見的反爬手段與應對方法
- 反爬手段:headers字段(User-Agent字段、過referer字段、cookie)
解決方法:在爬蟲中添加Headers,瀏覽器的User-Agent復制到爬蟲的Headers中,將Referer值修改為目標網站域名。 - 反爬手段:js(跳轉、生成了請求參數(shù)、數(shù)據(jù)的加密)
解決方法:selenium+phantomJS框架,調用瀏覽器內核,并利用phantomJS執(zhí)行js來模擬人為操作以及觸發(fā)頁面中的js腳本。 - 反爬手段:IP地址
解決方法:IP代理,隨機間隔幾秒。 - 反爬手段:驗證碼
解決方法:cookie登錄、打碼平臺、selenium 模擬 - 反爬手段:css(利用css掩蓋真實數(shù)據(jù))
解決方法:找到被替換文本和順序、重排文本、對原文中span標簽根據(jù)class序號進行替換。
- 數(shù)據(jù)去重,清洗,存入數(shù)據(jù)庫
- set()
- 數(shù)據(jù)庫唯一約束
- Scrapy內置的url去重方法
- 正則表達式
- 編寫代碼清洗數(shù)據(jù)
- 數(shù)據(jù)庫存儲后清洗
- Scrapy的基本結構
引擎(Scrapy)
調度器(Scheduler)
下載器(Downloader)
爬蟲(Spiders)
項目管道(Pipeline)
下載器中間件(Downloader Middlewares)
爬蟲中間件(Spider Middlewares)
調度中間件(Scheduler Middewares) - Scrapy運行流程
1.引擎從調度器中取出一個URL用于抓取
2.引擎把URL封裝成一個Request給下載器
3.下載器把資源下載并封裝成Response
4.爬蟲解析Response
5.解析出Item交給管道進一步處理
6.解析出URL把URL交給調度器等待抓取 - Scrapy幾種中間件
- 下載器中間件(Downloader Middlewares):請求到網頁后,頁面被下載時進行處理
- 爬蟲中間件(Spider Middlewares):在爬蟲運行中進行一些處理
- 調度中間件(Scheduler Middewares)
- 代理怎么使用
可以放在一個列表中,隨機選擇一個代理去訪問網站。 - 同步和異步
- 線程方面:
同步:多個線程同時訪問同一資源,等待訪問結束,浪費時間、效率低下。
異步:在訪問資源的時,在空閑等待時可以同時訪問其他的資源。 - 網絡方面:
同步:提交請求→等待服務器處理→處理完畢返回 期間客戶端瀏覽器不能做任何事情。
異步:事件觸發(fā)請求→服務器處理→處理完畢 期間瀏覽器可以做其他事情。
- 鏈表和順序存儲
- 順序存儲:
原理:數(shù)據(jù)存儲在一塊連續(xù)的內存空間。
優(yōu)點:存儲效率高、速度快、通過下標直接存儲。
缺點:插入刪除慢、不可以增長長度。 - 鏈表存儲
原理:動態(tài)分配空間,存儲器有空間就不會發(fā)生存儲溢出。
優(yōu)點:插入刪除速度快、保留物理順序,更改只需改變指針指向。
缺點:查找需要循環(huán)鏈表,速度慢。