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