scrapy_redis:第三方庫實現分布的部署
分布式爬蟲: 只需要在眾多電腦中, 選擇其中一台開啟redis服務, 目的就是在redis中建立公用的queue和公用的set, 然後剩餘電腦只需要連線redis服務即可,剩餘電腦不需要開啟redis-server服務。
1>在虛擬環境中安裝pip install redis
2>去github上搜尋scrapy_redis庫,解壓,儲存到專案根目錄下。根據提供的用例,配置我們的專案,大致三部分:
1.settings.py檔案;
scheduler = "scrapy_redis.scheduler.scheduler"
dupefilter_class = "scrapy_redis.dupefilter.rfpdupefilter"
# item_pipelines: 可設定也可不設定
item_pipelines =
# myroot: 自定義的redis鏈結。ip:開啟redis-server服務的這台電腦的ip
redis_url = 'redis://myroot:@本機ip:6379'
本機ip: 可通過在cmd中輸入命令ipconfig查詢
2.jobbole.py檔案;
from scrapy_redis.spiders import redisspider
class jobbolespider(redisspider):
name = 'jobbole'
allowed_domains = ['jobbole.com']
# start_urls = ['']
# 新增鍵
redis_key = 'jobbole:start_urls'
3.有關資料庫部分;
執行mysql -uroot -p 會提示mysql不是內部或外部命令--->需要將mysql.exe的路徑新增到環境變數中
(如果新增成功以後沒起作用,那就重啟電腦吧)
安裝mysql的時候,預設生成的使用者root只有本地登入許可權localhost,如果需要遠端連線mysql,需要分配乙個擁有遠端連線許可權的新使用者。
第一步:通過mysql -uroot -p登入mysql服務。
第二步:通過grant all privileges on *.* to 'myroot'@'%' identified by '123456';(注意一定要帶上分號)。
# *.* 表示所有資料庫中的所有表,都能夠被遠端連線
# '%' 表示任意ip都可以進行鏈結
# 'myroot' 具有遠端鏈結許可權的使用者名稱,自定義。之後就使用這個user進行鏈結資料庫
mysql->grant all privileges on *.* to 'myroot'@'%' identified by '123456'; 回車即可。
第三步:再去修改爬蟲專案中有關資料庫的配置。
mysql_host = '192.168.40.217'
mysql_dbname = 'article_db'
mysql_user = 'myroot'
mysql_password = '123456'
mysql_charset = 'utf8'
注意: 需要自己建立乙個新的資料庫連線
3>將配置好的專案,拷貝到不同的機器中;
4>選擇其中一台機器,開啟redis-server服務,並修改redis.windows.conf配置檔案:
# 配置遠端ip位址,供其他的電腦進行連線redis
bind: (當前電腦ip) 192.168.40.217
# 關閉redis保護模式
(修改redis.windows-service.conf中的應該是也可以的)
執行爬蟲專案:
可在scheduler.py中加斷點
啟動redis: redis-server --service-install redis.windows.conf
爬蟲 分布式爬蟲
爬蟲的本質 很多搞爬蟲的總愛吹噓分布式爬蟲,彷彿只有分布式才有逼格,不是分布式簡直不配叫爬蟲,這是一種很膚淺的思想。分布式只是提高爬蟲功能和效率的乙個環節而已,它從來不是爬蟲的本質東西。爬蟲的本質是網路請求和資料處理,如何穩定地訪問網頁拿到資料,如何精準地提取出高質量的資料才是核心問題。分布式爬蟲只...
分布式爬蟲
乙個基於scrapy redis的分布式爬蟲模板,在scrapy redis自帶的example的基礎上進行修改,新增在實際爬取過程中大部分爬蟲可能用到的功能,使的構建分布式爬蟲更加的簡單。scrapy redis windows ubuntu sudo apt get install redis ...
分布式爬蟲
修改普通爬蟲專案為分布式爬蟲 1.主爬蟲檔案myspider.py 做如下修改,其他不做修改 import scrapy from items import myitem 匯入資料模型 from scrapy redis.spiders import redisspider 匯入scrapy red...