從java的webmagic轉(zhuǎn)過來的.webmagic是根據(jù)scrapy的設(shè)計思路用java實現(xiàn)的,但實際用的過程中發(fā)現(xiàn)webmagic沒有下載模塊,還有一些其他功能也不夠全,所以干脆看了看python語法,直接上手scrapy算了.這里簡單記錄一些問題,算是備忘吧.
爬蟲的一些通用技術(shù)點
對于反爬蟲機制的處理
請求發(fā)送的間隔時間設(shè)置->拿別人的數(shù)據(jù)要有節(jié)操
setting里
DOWNLOAD_DELAY = 0.25 # 250 ms of delay
注意:download指的是download html,不是download文件.
默認情況下姊扔,Scrapy在兩個請求間不等待一個固定的值弧哎, 而是使用0.5到1.5之間的一個隨機值.
感覺就是,你沒想到的,框架都幫你想好了.
建立大于2s,不要把人家網(wǎng)站搞的卡住,模擬正常的頻率就好.
偽造user-agent,或者動態(tài)切換多個user-agent
同樣在setting里:
單個:
USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.54 Safari/536.5'
動態(tài):
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware':None,
'example.middlewares.RotateUserAgentMiddleware':400,
//注意這里的路徑寫法: model名.文件名.class名
}
example.middlewares.RotateUserAgentMiddleware 是自己定義的一個class.詳見
http://blog.csdn.net/liyuetao680/article/details/48501481
使用代理-維護一個代理池
登錄相關(guān)
- 怎么發(fā)post
- 驗證碼怎么搞
- cookie管理
其他
- 斷線重連
- 多進程和多線程
需不需要自己實現(xiàn),還是框架內(nèi)置?
怎么指定多少個進程,多少線程? - ajax 請求的處理
- 怎么樣實現(xiàn)分布式?
- 怎么調(diào)試
- 怎么增量式抓取
setting.py 全局配置
http://www.myexception.cn/web/1646523.html
強制停止
兩次 ctrl +C