Scrapy-redis 传入初始url后,监听中的爬虫未启动,求解
问题描述
写了一个分布式爬虫,使用虚拟机进行模拟的时候,redis服务器已经启动,并且设置好了可远程连接,爬虫服务器启动后进入监听状态,然后传入redis-key
起始url后,爬虫却为开始爬取,而且仍然无动于衷。
包括直接在本机启动爬虫连接redis,推入连接后也无法启动。
网上相关问题找了很久没有找到,很是费解,求大佬指点一下
是网络问题?还是redis设置问题?又或是其他?
相关代码
- 服务器端
- 爬虫端
爬虫部分代码
- 爬虫文件头部设置
# -*- coding: utf-8 -*-
from scrapy_redis.spiders import RedisSpider
from ..items import NowHouseItem, EsfItem
import scrapy
class FangSpider(RedisSpider):
name = 'fang'
allowed_domains = ['fang.com']
# start_urls = ['https://www.fang.com/SoufunFamily.htm']
redis_key = "fang:strat_urls"
province = None
- settings文件
# -\*- coding: utf-8 -\*-
BOT\_NAME = 'fangtianxia'
SPIDER\_MODULES = \['fangtianxia.spiders'\]
NEWSPIDER\_MODULE = 'fangtianxia.spiders'
ROBOTSTXT\_OBEY = False
DOWNLOAD\_DELAY = 1
DEFAULT\_REQUEST\_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,\*/\*;q=0.8',
'Accept-Language': 'zh-CN',
}
SPIDER\_MIDDLEWARES = {
'fangtianxia.middlewares.UserAgentDownloadMiddleware': 543,
}
# Scrapy-Redis相关配置
# 确保request存储到redis中
SCHEDULER = "scrapy\_redis.scheduler.Scheduler"
# 确保所有爬虫共享相同的去重指纹
DUPEFILTER\_CLASS = "scrapy\_redis.dupefilter.RFPDupeFilter"
# 设置redis为item pipeline
ITEM\_PIPELINES = {
'scrapy\_redis.pipelines.RedisPipeline': 300
}
# 在redis中保持scrapy-redis用到的队列,不会清理redis中的队列,从而可以实现暂停和恢复的功能。
SCHEDULER\_PERSIST = True
# 设置连接redis信息
REDIS\_HOST = '192.168.0.102'
REDIS\_PORT = 6379
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
已经解决了
切回非分布式状态爬取发现,由于之前爬取过于奔放,IP被ban了,加上IP池就正常了
加上IP代理池,重新运行,成功爬取