Scrapy-redis 传入初始url后,监听中的爬虫未启动,求解

发布于 2022-09-12 02:40:17 字数 1727 浏览 40 评论 0

问题描述

写了一个分布式爬虫,使用虚拟机进行模拟的时候,redis服务器已经启动,并且设置好了可远程连接,爬虫服务器启动后进入监听状态,然后传入redis-key起始url后,爬虫却为开始爬取,而且仍然无动于衷。
包括直接在本机启动爬虫连接redis,推入连接后也无法启动。

网上相关问题找了很久没有找到,很是费解,求大佬指点一下
是网络问题?还是redis设置问题?又或是其他?

相关代码

  • 服务器端

2.png

  • 爬虫端

1.png

爬虫部分代码

  • 爬虫文件头部设置
# -*- 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我爱人 2022-09-19 02:40:17

已经解决了
切回非分布式状态爬取发现,由于之前爬取过于奔放,IP被ban了,加上IP池就正常了
加上IP代理池,重新运行,成功爬取

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文