栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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])

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

哈哈!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/840176.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号