创建工程忽略
在setting.py中添加
#增加了一个去重容器类的配置,作用使用Redis的set集合来存储指纹数据,从而实现去重持久化 DUPEFILTER_CLASS="scrapy_redis.dupefilter.RFPDupeFilter" #使用scrapy_redis组件自己调度器 SCHEDULER="scrapy_redis.scheduler.Scheduler" #配置调度器是否持久化,也就是当爬虫结束了 要不要清空Redis中请求队列和去重指纹的set #True表示今天爬过了 明天就不爬重复 SCHEDULER_PERSIST=True ITEM_PIPELINES={ 'scrapy_redis.pipelines.RedisPipeline':400 } #存储到Redis中 REDIS_HOST="127.0.0.1" REDIS_PORT=6379
在爬虫文件写入
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from scrapy_redis.spiders import RedisCrawlSpider
from fbsPro.items import FbsproItem
class FbsSpider(RedisCrawlSpider):
name = "fbs"
# allowed_domains = ["www.xxx.com"]
# start_urls = ["https://www.xxx.com"]
redis_key = 'sanQuqu' #可以被共享的调度器名字
rules = (Rule(LinkExtractor(allow=r"id=1&page=\d+"), callback="parse_item", follow=True),)
def parse_item(self, response):
li_list=response.xpath('/html/body/div[2]/div[3]/ul[2]/li')
for li in li_list:
title=li.xpath('./span[3]/a/text()').extract_first()
item=FbsproItem()
item['title']=title
yield item
#需要重写方法
def make_requests_from_url(self, url):
yield scrapy.Request(url=url)
运行爬虫文件
运行后等待手动在Shell窗口输入Url
然后打开Redis安装目录
右键打开Shell窗口
输入指令 redis-server
打开客户端 redis-cli
这个是上面的代码 “” redis_key = 'sanQuqu' #可以被共享的调度器名字“”
输入 lpush sanQuqu 这里输入要爬取的url
按下回车在pycharm中就可以看到爬取的数据