成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何改造 Scrapy 從而實現多網站大規模爬取?

開發 架構
Scrapy 框架默認是用來開發定向爬蟲的。一般情況下,在 spiders 文件夾下面的一個.py 文件對應了一個網站的爬取。

Scrapy 框架默認是用來開發定向爬蟲的。一般情況下,在 spiders 文件夾下面的一個.py 文件對應了一個網站的爬取。

但還有另外一種爬蟲,它不會拘泥于提取頁面上的特定文字,而是關注如何并行爬取非常多的網站。這種爬蟲可以實現大規模的爬取。這種爬蟲,一般是從若干個種子網址開始爬。進入每個網址后,把該頁面的所有網址作為新的種子網址繼續爬取,源源不斷,生生不息。但爬到以后,一般直接把整個頁面的源代碼保存下來,通過 Kafka 或者其他組件傳給另外的服務進行解析。

為了讓 Scrapy 適配這種通用的解析邏輯,需要做一些定制化修改。Scrapy 官方文檔中,給出了幾點修改建議。

[[346609]]

修改調度隊列

Scrapy 默認的調度隊列是scrapy.pqueues.ScrapyPriorityQueue,它適合做定向爬蟲使用,對于通用爬蟲,我們應該修改為scrapy.pqueues.DownloaderAwarePriorityQueue。在 settings.py文件中添加一行:

  1. SCHEDULER_PRIORITY_QUEUE = 'scrapy.pqueues.DownloaderAwarePriorityQueue' 

提高并發量在

settings.py中增加配置:

  1. CONCURRENT_REQUESTS = 100 
  2. CONCURRENT_REQUESTS_PER_DOMAIN = 100 

但是并發量實際上受內存和 CPU 的限制,建議實際測試,選擇最適合的數字。

提高 Twisted IO 線程池大小

Scrapy 在做 DNS 解析的時候,是阻塞式的。所以請求量越高,解析 DNS 就會越慢。為了避免這個情況,可以提高線程池的大小。在 settings.py中增加一個配置:

  1. REACTOR_THREADPOOL_MAXSIZE = 20 

搭建專用 DNS 服務器

如果爬蟲進程數太多,并發又太快,可能會對 DNS 服務器形成 Dos 攻擊。所以建議自己單獨搭建一個 DNS 服務器。

減少日志量

Scrapy 默認是 DEBUG 級別的日志等級,每次爬取會產生大量的日志。通過把日志等級調整到INFO 可以大大減少日志量。在 settings.py 中增加一行:

  1. LOG_LEVEL = 'INFO' 

禁用 Cookies 和自動重試

大規模爬蟲一般不需要用到 Cookies,所以可以把它禁用。請求失敗的自動重試會降低爬蟲的速度。但是由于大規模爬蟲的爬取范圍很大,對于個別失敗的請求沒有必要重試。因此修改settings.py:

  1. COOKIES_ENABLED = False 
  2. RETRY_ENABLED = False 

降低請求超時時間,禁用自動跳轉

有些網址因為遠在大洋彼岸或者受到了干擾,請求響應時間很長。對于這種網址,應該果斷放棄,避免影響其他網址的爬取。

禁用自動跳轉功能,也有助于提高網頁訪問速度。

  1. DOWNLOAD_TIMEOUT = 10 
  2. REDIRECT_ENABLED = False 

使用廣度有限搜索

Scrapy 默認基于深度優先(DFO)搜索算法。但在大規模爬蟲中,我們一般會使用廣度有限(BFO)搜索算法:

  1. DEPTH_PRIORITY = 1 
  2. SCHEDULER_DISK_QUEUE = 'scrapy.squeues.PickleFifoDiskQueue' 
  3. SCHEDULER_MEMORY_QUEUE = 'scrapy.squeues.FifoMemoryQueue' 

關注內存,謹防內存泄露如果你發現爬蟲占用大量內存,但是速度遠遠低于你設置的并發速度,那么要考慮是否發生了內存泄露。

 

責任編輯:趙寧寧 來源: 未聞Code
相關推薦

2021-06-02 15:10:20

PythonScrapy視頻

2009-03-20 09:49:00

負載均衡CDN網站架構

2009-04-09 09:32:00

VoWLANWLAN

2010-09-01 15:16:49

WLAN交換機結構

2022-12-07 12:56:24

物聯網5G

2017-08-21 07:50:18

EasyStackOpenStack部署

2021-05-12 09:15:48

Facebook 開發技術

2023-02-21 10:58:01

2017-11-15 09:41:14

數據可視化數據科大數據

2012-07-24 08:54:15

2022-01-14 18:59:06

網絡攻擊黑客網絡安全

2021-12-14 15:52:52

網絡攻擊漏洞網絡安全

2022-03-17 05:53:25

DDoS網絡攻擊

2010-07-15 09:53:02

云計算計算網絡

2016-12-07 11:18:58

Python爬蟲網站

2018-03-22 11:38:18

2022-01-19 11:52:44

網絡攻擊烏克蘭網站癱瘓

2016-01-29 20:23:23

華為

2017-04-26 13:30:24

爬蟲數據采集數據存儲

2024-07-03 08:19:56

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 影视一区 | 久久av一区 | 午夜视频在线免费观看 | 精品日韩欧美一区二区 | 久久久久国产精品一区 | 国产精品自产拍 | 久草.com| 亚洲精品久久久9婷婷中文字幕 | 日韩精品在线视频 | www日日日 | 人人干人人舔 | 国产片一区二区三区 | 中文字幕av网址 | www.成人.com| 国产精品亚洲精品日韩已方 | 国产一区二区电影网 | 黄色电影在线免费观看 | 亚洲精品一区二区三区四区高清 | 男人天堂手机在线视频 | av在线天天| 超碰免费在 | 欧洲精品在线观看 | 精品96久久久久久中文字幕无 | 最新中文字幕在线 | 久久精品无码一区二区三区 | 亚洲精品中文字幕中文字幕 | 欧美最猛黑人xxxⅹ 粉嫩一区二区三区四区公司1 | 国产精品成人在线播放 | 欧美精品免费观看二区 | 在线久草| 黄网站涩免费蜜桃网站 | 一级午夜aaa免费看三区 | 狠狠干综合视频 | 综合第一页| 亚洲精品天堂 | 在线观看视频一区二区三区 | 精品一区二区电影 | 免费av观看| 日本精品一区二区三区在线观看视频 | 中文字幕在线观看日韩 | 亚洲一区二区精品 |