Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
546 views
in Technique[技术] by (71.8m points)

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

问题描述

写了一个分布式爬虫,使用虚拟机进行模拟的时候,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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...