关于scrapy爬取的数据没法存到redis数据库中

敲出亿行bug 2020-03-06 04:55:15
settings.py:

#Redis 数据库
REDIS_HOST = "127.0.0.1"
REDIS_PORT = 6379
REDIS_DB_INDEX = 1

pipelines.py:

import redis
class Redis_Spider(object):

def open_spider(self,spider):
host = spider.settings.get("REDIS_HOST","localhost")
port = spider.settings.get("REDIS_PORT",6379)
db_index = spider.settings.get("REDIS_DB_INDEX",0)
self.db_conn = redis.StrictRedis(host=host, port = port, db = 0)
#将数据存储到数据库中
def process_spider(self,item,spider):
item_dict = dict(item)
self.r.rpush("novel",item_dict)
return item
def close_spider(self,spider):
self.r.connection_pool.disconnect()

运行结果:截取片段
2020-03-06 16:44:58 [scrapy.core.engine] INFO: Spider opened
2020-03-06 16:44:58 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2020-03-06 16:44:58 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6023
2020-03-06 16:44:58 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.qidian.com/robots.txt> (referer: None)
2020-03-06 16:44:59 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.qidian.com/rank/hotsales?style=1&page=1> (referer: None)
2020-03-06 16:44:59 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.qidian.com/rank/hotsales?style=1&page=1>

{'name': '诡秘之主', 'author': '爱潜水的乌贼', 'type': '玄幻', 'status': '连载', 'up_date': '最新更新 第三十四章 第四个人'}
2020-03-06 16:44:59 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.qidian.com/rank/hotsales?style=1&page=1>

{'name': '亏成首富从游戏开始', 'author': '青衫取醉', 'type': '游戏', 'status': '连载', 'up_date': '最新更新 第534章 这都是出于对裴总性格的精确揣摩!(求月票!)'}
2020-03-06 16:44:59 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.qidian.com/rank/hotsales?style=1&page=1>

{'name': '我师兄实在太稳健了', 'author': '言归正传', 'type': '仙侠', 'status': '连载', 'up_date': '最新更新 第三百二十章 今我来之,君何所思?今你所来,解我所思。'}
2020-03-06 16:44:59 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.qidian.com/rank/hotsales?style=1&page=1>

{'name': '当医生开了外挂', 'author': '手握寸关尺', 'type': '都市', 'status': '连载', 'up_date': '最新更新 第822章:我要收网了,赶紧上钩!(为盟主你能成大事儿加更1)'}
2020-03-06 16:44:59 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.qidian.com/rank/hotsales?style=1&page=1>
...全文
596 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
66666666
敲出亿行bug 2020-03-07
  • 打赏
  • 举报
回复
不成功,直接加数据可以,但是爬取得放不进去
敲出亿行bug 2020-03-07
  • 打赏
  • 举报
回复
引用 8 楼 冰风漫天的回复:
你在process_spider函数里打印,看是不是有进来 还有字典应该要转json才能存redis,你执行下 self.db_conn.rpush("novel",json.dumps(item_dict))
问题解决了是函数名写错了,,应该是process-item,不是process-spider
敲出亿行bug 2020-03-07
  • 打赏
  • 举报
回复
引用 9 楼 汲取力量的programer的回复:
[quote=引用 8 楼 冰风漫天的回复:]你在process_spider函数里打印,看是不是有进来 还有字典应该要转json才能存redis,你执行下 self.db_conn.rpush("novel",json.dumps(item_dict))
问题出在了process这个部分,这个函数获取不到db-CONN[/quote] 怎么解决是个问题
敲出亿行bug 2020-03-07
  • 打赏
  • 举报
回复
引用 8 楼 冰风漫天的回复:
你在process_spider函数里打印,看是不是有进来 还有字典应该要转json才能存redis,你执行下 self.db_conn.rpush("novel",json.dumps(item_dict))
问题出在了process这个部分,这个函数获取不到db-CONN
冰风漫天 2020-03-07
  • 打赏
  • 举报
回复
你在process_spider函数里打印,看是不是有进来 还有字典应该要转json才能存redis,你执行下 self.db_conn.rpush("novel",json.dumps(item_dict))
敲出亿行bug 2020-03-07
  • 打赏
  • 举报
回复
引用 6 楼 冰风漫天 的回复:
有打印输出吗?
没有异常输出
冰风漫天 2020-03-07
  • 打赏
  • 举报
回复
有打印输出吗?
冰风漫天 2020-03-06
  • 打赏
  • 举报
回复
如果还是不行的话,这两行你捕捉下异常打印下看看 try: item_dict = dict(item) self.db_conn.rpush("novel",item_dict) except Exception as ex: print(ex)
冰风漫天 2020-03-06
  • 打赏
  • 举报
回复
你上面是self.db_conn = redis.StrictRedis(host=host, port = port, db = 0) 下面为什么不是用 self.db_conn.rpush("novel",item_dict)
敲出亿行bug 2020-03-06
  • 打赏
  • 举报
回复
引用 1 楼 冰风漫天的回复:
有报错么,没有报错吗?
没有报错,控制台有结果显示
冰风漫天 2020-03-06
  • 打赏
  • 举报
回复
有报错么,没有报错吗?
【资源说明】 1、基于Scrapy+Redis+Python + Scrapy + redis的分布式爬虫设计源码+项目说明.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于Scrapy+Redis+Python + Scrapy + redis的分布式爬虫设计源码+项目说明.zip # Python_Scrapy_Distributed_Crawler Python基于Scrapy-Redis分布式爬虫设计毕业源码案例设计 ## 开发环境:Python + Scrapy框架 + redis数据 ## 程序开发工具: PyCharm 程序采用 python 开发的 Scrapy 框架来开发,使用 Xpath 技术对下载的网页进行提取解析,运用 Redis 数据做分布式, 设计并实现了针对当当图书网的分布式爬虫程序,scrapy-redis是一个基于redisscrapy组件,通过它可以快速实现简单分布式爬虫程序,该组件本质上提供了三大功能: scheduler - 调度器 dupefilter - URL去重规则(被调度器使用) pipeline - 数据持久化 Scrapy是一个比较好用的Python爬虫框架,你只需要编写几个组件就可以实现网页数据爬取。但是当我们要爬取的页面非常多的时候,单个主机的处理能力就不能满足我们的需求了(无论是处理速度还是网络请求的并发数),这时候分布式爬虫的优势就显现出来。 而Scrapy-Redis则是一个基于RedisScrapy分布式组件。它利用Redis对用于爬取的请求(Requests)进行存储和调度(Schedule),并对爬取产生的项目(items)存储以供后续处理使用。scrapy-redi重写了scrapy一些比较关键的代码,将scrapy变成一个可以在多个主机上同时运行的分布式爬虫。

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧