一. Forbidden by robots.txt
报错截图
研究:
查了一下 robot.txt 发现有一个 robot 协议,这个协议中规定了本站点允许爬虫机器抓取哪些网页或文件,可以访问这个链接 www.baidu.com/robots.txt 查看权限
User-agent: Baiduspider
Disallow: /baidu
而 scrapy 默认遵守 robot 协议,我们只要不遵守就可以了。
解决:
关闭 scrapy 自带 ROBOTSTXT_OBEY 功能,在 setting 找到这个变量,设置为 False 即可。
二. TypeError: Object of type 'Selector' is not JSON serializable
问题:json 序列化失败
原因:忘记 extract()
extract():序列化该节点为unicode字符串并返回list
三.write() argument must be str, not bytes
报错信息:
代码:
filename=open('test.json','w')
解决:
改成 wb,以二进制写模式打开就可以了
四.安装 scrapy
环境:
Python版本:3.6.3
macos:10.13.5
安装:
pip3 install Scrapy —user
报错
显示安装成功,然后执行 scrapy -v 报错信息如下:
bash: scrapy: command not found
解决方法
- 检查一下相关依赖有没有安装
点这里打开 scrapy 的 github
执行 pip list 跟 setup.py 这段对比,看下依赖是不是都正确安装
- 依赖都正确安装,创建软链
find / -name scrapy 结果如图
ln -s /Users/macbook/Library/Python/3.6/bin/scrapy /usr/local/bin/scrapy
再执行 scrapy 命令就可以了