生活随笔
收集整理的這篇文章主要介紹了
分布式爬取
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
編輯本隨筆
概念:在多臺(tái)機(jī)器上執(zhí)行同一個(gè)爬蟲程序,實(shí)現(xiàn)網(wǎng)站數(shù)據(jù)的分布式爬取
原生scrapy不可以實(shí)現(xiàn)分布式爬蟲,原因如下:
調(diào)度器無法在多臺(tái)電腦上共享管道無法共享分布式爬蟲組件:scrapy-redis,該組件可以讓scrapy實(shí)現(xiàn)分布式。
pip install scrapy-redis分布式爬取流程:
redis數(shù)據(jù)庫安裝redis文件配置 - 將bind 127.0.0.1注銷掉
- 將保護(hù)模式改為no,關(guān)閉保護(hù)模式,即protected-mode no
基于配置文件啟動(dòng)redis服務(wù)器代碼流程:
創(chuàng)建scrapy工程,創(chuàng)建基于crawlSpider的項(xiàng)目從scrapy_redis.spiders中導(dǎo)入RedisCrawlSpider,并將項(xiàng)目的父類由CrawlSpider改為RedisCrawlSpider指定redis_key,指定start_urls在redis數(shù)據(jù)庫中存放的位置 # -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from scrapy_redis.spiders import RedisCrawlSpiderclass QiubaiSpider(RedisCrawlSpider):name = 'qiubai'allowed_domains = ['https://www.qiushibaike.com/imgrank/']# start_urls = ['http://https://www.qiushibaike.com/imgrank//']#表示start_urls在redis中存放的位置,作用類似start_urlsredis_key="qiubaispider"rules = (Rule(LinkExtractor(allow=r'Items/'), callback='parse_item', follow=True),)def parse_item(self, response):item = {}#item['domain_id'] = response.xpath('//input[@id="sid"]/@value').get()#item['name'] = response.xpath('//div[@id="name"]').get()#item['description'] = response.xpath('//div[@id="description"]').get()return item View Code 配置setting文件,將項(xiàng)目的管道和調(diào)度器配置成基于scrapy-redis組件對(duì)應(yīng)提供的功能 #使用組件封裝的管道,不使用原生的管道
ITEM_PIPELINES = {'scrapy_redis.pipelines.RedisPipeline': 300,
}
# 使用scrapy-redis組件的去重隊(duì)列進(jìn)行去重操作
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"# 使用scrapy-redis組件自己的調(diào)度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"# 是否允許暫停,即程序意外宕機(jī)重啟后從上次意外退出的地方重新爬取
SCHEDULER_PERSIST = True#Redis服務(wù)器地址,代碼拷貝到其他服務(wù)器后,爬取的數(shù)據(jù)將保存到如下地址的redis服務(wù)器中
REDIS_HOST="192.168.1.1"#Redis服務(wù)器端口
REDIS_PORT=6379 執(zhí)行爬蟲文件,進(jìn)入爬蟲目錄scrapy runspider qiubai.py,啟動(dòng)后爬蟲就開始監(jiān)聽redis的qiubaispider鍵對(duì)應(yīng)的內(nèi)容 將起始url放入redis中:127.0.0.1:6379> lpush qiubaispider https://www.qiushibaike.com/pic/開始爬取內(nèi)容基于RedisSpider實(shí)現(xiàn)分布式爬蟲
UA池:user-agent池
代理池:對(duì)代理IP進(jìn)行批量更換
selenium如何應(yīng)用到scrapy框架
轉(zhuǎn)載于:https://www.cnblogs.com/yaya625202/p/10432038.html
總結(jié)
以上是生活随笔為你收集整理的分布式爬取的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。