使用scrapy的定製爬蟲-近期

近期個人爬蟲寫完了-.-沒有足夠的資源(服務器,帶寬)來跑.so這個項目暫放一下先找工做了. css

簡單說下後面的內容要點.
定製webkit:
1,主要做用是:支持js,另可快速解析被hide了的干擾元素(頁面中的非顯示內容).這點用webpage的toPlainText便可...優化方面:1,緩存webkit進程實例.2,經過一些比較hack的方法,把css給禁了(定製manager.createRequest).3,其餘一些配置項.例如webkit開啓preferNetwork來支持標準的http cache...主要就這幾個了... web

2,scrapy自己的優化方面:
scrapy自己不少東西優化(例如dnscache)都是已經完成了的,請先仔細閱讀文檔,必要時源碼.業務相關的部分,建議注意正則解析速率(可採起先寫邏輯大體提取後再正則).解析寫的很差會致使cpu佔用高(若沒法優化.考慮解析和爬取徹底分離是否可行).這些都是具體狀況具體處理了.
說下scrapy框架的優化.
1,scrapy使用短鏈接.可以使用requests+scrapy.utils裏面的deferinthread快速patch成長鏈接,但deferinthread用到了線程池,所以網絡方面改善了但調度方面變差了(由twisted異步變爲線程池).請評估.有時間我會給scrapy寫個長連接支持,在twisted基礎上.
2,考慮給scrapy實現標準的http cache,也可經過代理服務器快速patch一個http  cache(無需改動代碼).看具體狀況了. 算法

3,scrapy的一些細節:
同上scrapy不少細節也替你作了(例如url規範化),請先仔細閱讀文檔,必要時源碼.其餘一些細節
1,default_headers,添加host頭,不然會致使部分虛擬空間沒法訪問
2,連接解析中,a tag的href,寫rule中的ProcessLink,記得strip,有些網站有相似以下的<a href=' xxxx'>前面有個空格,會致使scrapy的連接解析錯誤(但瀏覽器訪問正常)
3,是否要支持iframe.即寫連接解析時考慮iframe元素處理
4,etc...略想不起來...

4,架構,運行監控方面:
這個跟具體狀況有關...簡單說下,你要考慮spider如何寫,是否多crawler...crawler和spider的對應關係...通常狀況你不須要考慮這個問題(絕大多數都是crawler,spider一對一). 瀏覽器

其餘...etc...回想中... 緩存

後續我又看了不少有趣的spider trap-.-不過突破防爬取不會被說起.
也弄了下gevent-.-結論是除非你清楚你在幹啥...不然仍是用scrapy吧...
正在學習爬蟲相關的算法中... 服務器

-.-系列文先暫停在此了...
網絡

相關文章
相關標籤/搜索