Scrapy 小小试验遇到的4个问题

562 阅读1分钟

一. 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

解决方法

  1. 检查一下相关依赖有没有安装
    点这里打开 scrapy 的 github
    执行 pip list 跟 setup.py 这段对比,看下依赖是不是都正确安装

  1. 依赖都正确安装,创建软链

find / -name scrapy 结果如图

ln -s /Users/macbook/Library/Python/3.6/bin/scrapy /usr/local/bin/scrapy

再执行 scrapy 命令就可以了