无名 发表于 2022-5-8 17:31:53

【冷漠】Python学习心得(四)


大家好,这里稚悠,觉得好的话就点个关注吧[玫瑰]http://cdn.u1.huluxia.com/g4/M02/AB/DF/rBAAdl8Jxr6AbPW3AABX2BkUhwE814.jpg
跟着橡皮擦老师的爬虫课走到第30课,终于开始接触scrapy框架了。我的练习项目是橡皮擦的第31课,爬取kr36的数据。源课程地址如下:
https://cloud.tencent.com/developer/article/1397845
橡皮擦老师已经给出了大部分的功能代码,我主要把调试的过程中的几个坑填一下,另外给出可以完整运行的项目示例。

1、scrapy项目安装中的问题

scrapy的安装我是根据scrapy中文指导手册进行的
https://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/install.html#scrapy
在手册中,提到要在python2.7的环境下安装,我自行百度了一下,应该是python3.7对框架的有问题,但是我没有继续研究下去,希望有厉害的小伙伴能够整理一套3.7环境下完美运行scrapy的方法http://cdn.u1.huluxia.com/g4/M02/AB/DF/rBAAdl8JxsSAEr1nAAEUAGabhjE452.jpg
按照指导,切换环境为python2.7,完成scrapy的安装。

2、代码调试过程的问题

2.1 在橡皮擦的代码中,pipeline保存数据到本地时,打开文件使用的方法是open(store_file,“a+”,store_file,“a+”,newline="",encoding=“utf_8_sig”)
运行时报错如下:http://cdn.u1.huluxia.com/g4/M02/AB/DF/rBAAdl8JxseAc3J4AACJX713MXQ055.png
搜索答案,发现python2.7的open函数不支持4个参数,将后面两个参数删除掉之后排除该问题
2.2 橡皮擦的代码中没有导入item类
运行时报错如下:http://cdn.u1.huluxia.com/g4/M02/AB/DF/rBAAdl8JxsiAZ_kWAACCAuSr3NA683.png
在爬虫类中导入item类之后,报错排除
from kr36.items import Kr36Item
2.3 由于python2.7的限制,没有按照橡皮擦加载json响应时转换成unicode的写法,通过加入打印发现在pipeline存储数据的时候出现了编码错误http://cdn.u1.huluxia.com/g4/M02/AB/DF/rBAAdl8JxsqAGgsbAAEJOlUgEqY339.png
通过百度,发现要在pipeline中设置默认编码http://cdn.u1.huluxia.com/g4/M02/AB/DF/rBAAdl8JxsqAU8pWAABBbHnDYVg715.png
加入后可以正确运行http://cdn.u1.huluxia.com/g4/M02/AB/DF/rBAAdl8Jxs2AM_GCAALUAFakBr4814.jpg
完整的可运行项目地址
https://github.com/daniuyan/learngit/tree/master/kr36http://cdn.u1.huluxia.com/g4/M02/AB/DF/rBAAdl8Jxs2AJj8gAAAIAHXQwjY897.jpg
页: [1]
查看完整版本: 【冷漠】Python学习心得(四)