scrapy-redis 分布式爬虫 python版本及中文数据提取问题解决

1. 如遇到提示 cannnot import Iterable from collections ,只需去 venv/lib/site_packges/scrapy-redis/spider 文件中把

from collections import Iterable

改成

from collections.abc import Iterable

即可

2.如遇到提示爬虫文件里的类没有 make_requests_from_url 这个属性,则只需要在爬虫文件的类中加入实例方法

def make_requests_from_url(self, url):
    return scrapy.Request(url, dont_filter=True)

即可

ps:这种方法有点小问题,就是redis数据库不会有 爬虫文件名:requests 这个键,我也不知道原因,但应该不影响

3.在网页中提取到的数据会保存在redis 数据库的 爬虫文件名:items 这个键中,但问题是中文数据会是16进制代码,比如:

b'{"title": "\\u5168\\u804c\\u6cd5\\u5e08", "author": "\\u4e71"}'

我们可以在redis数据库客户端用指令 type 爬虫文件名:items 发现这是一个列表,也就是说我们用分布式爬取的数据是保存在一个包含许多个字典的的列表里,提到字典,是不是应该条件反射想起json?没错,解决方法就是使用json库 

假设 con 是我们用python代码从redis拿到的存放数据的列表

import json

for i in range(len(con):

        con[i]=json.loads(con[i])

这样我们就能得到中文数据了

哈哈!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值