Scrapy框架 settings.py
在settings.py文件中,可以設置關於scrapy爬蟲,比如反爬措施、提高性能等
一、反爬:
1、USER-AGENT設置:
創建一個USER-AGENT池,隨機從其中抽取一條作為request中的User-Agent;
demo:
1 USER_AGENT_LIST = [
2 "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
3 "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)",
4 "Mozilla/4.0 (compatible; MSIE 7.0; AOL 9.5; AOLBuild 4337.35; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
5 "Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US)",
6 "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 2.0.50727; Media Center PC 6.0)",
7 "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET CLR 1.0.3705; .NET CLR 1.1.4322)",
8 "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.0.04506.30)",
9 ]
10 USER_AGENT = random.choice(USER_AGENT_LIST)
2、cookies設置:
禁止cookies,有些站點會從cookies中判斷是否為爬蟲,
COOKIES_ENABLED = False
3、設置下載延遲:
DOWNLOAD_DELAY = num 延遲區間範圍為 (0.5~1.5) * num
4、使用代理IP:
可以購買代理IP,
或者使用免費的代理IP,比如 西刺、快代理等,可以寫一個簡單爬蟲定時爬取免費IP,測試是否可用,組成免費代理池
5、使用高度分佈式的下載器(downloader)來繞過禁止(ban),就只需要專注分析處理頁面。這樣的例子有:Crawlera
二、提高爬蟲性能:
提高性能具體可以從下列着手,但是具體問題具體分析,不是每個爬蟲都適用:
1、提高併發能力:
併發是指scrapy同時處理的request的數量,默認的全局併發限制為16,可增加這個值,增加多少取決於爬蟲佔CPU多少,設置前最好測試一下,一般佔在80-90%為好
CONCURRENT_REQUESTS = num
2、降低log級別:
當調試程序完畢後,可以不適用DEBUG log級別,達到減少CPU使用率
LOG_LEVEL = 'INFO'
3、禁止cookies:
禁止cookies可以減少CPU使用率以及爬蟲在內存中記錄的蹤跡
COOKIES_ENABLED = False
4、禁止重試:
對於失敗的HTTP請求(如超時)進行重試會降低爬取效率,當爬取目標基數很大時,捨棄部分數據不影響大局,提高效率
RETRY_ENABLED = False
5、減少下載超時:
減小下載超時能讓卡住的連接能被快速的放棄並解放處理其他站點的能力
DOWNLOAD_TIMEOUT = num