Python scrapy 常见问题及解决 遇到的坑

Posted littlebob

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python scrapy 常见问题及解决 遇到的坑相关的知识,希望对你有一定的参考价值。

1. 爬虫出现Forbidden by robots.txt

解决方法:setting.py ROBOTSTXT_OBEY = True 改成False

原因:scrapy抓包时的输出就能发现,在请求我们设定的url之前,它会先向服务器根目录请求一个txt文件

这个文件中规定了本站点允许的爬虫机器爬取的范围(比如你不想让百度爬取你的页面,就可以通过robot来限制),因为默认scrapy遵守robot协议,所以会先请求这个文件查看自己的权限,而我们现在访问这个url得到

 1 User-agent: * 2 Disallow: / 

在setting改变ROBOTSTXT_OBEY为False,让scrapy不要遵守robot协议,之后就能正常爬取

对于使用robot协议的站点,只需要我们的爬虫不遵守该协议,就可以了,但是对于防止爬虫爬取,站点还有检查请求头、检查ip等等手段,还需要其他的相应处理。

2. 如何进一步获取数据并同时保存

解决方法:参考文章——scrapy爬取新浪网导航页所有大类、小类、小类里的子链接,以及子链接页面的新闻内容

3. ajax请求

解决方法:post请求

可以使用 yield scrapy.FormRequest(url, formdata, callback)方法发送POST请求

注意!!!

formdata的 参数值 必须是unicode , str 或者 bytes object,不能是整数。

4. 自动创建create_time

解决方法:将create_time字段设置为timestamp 并设置默认值CURRENT_TIMESTAMP

5. mysql 让清空表且自增的id重新从1开始

解决方法:truncate table table_name

以上是关于Python scrapy 常见问题及解决 遇到的坑的主要内容,如果未能解决你的问题,请参考以下文章

使用Scrapy编写爬虫程序中遇到的问题及解决方案记录

python Scrapy框架 报301

docker配置centos7的python2.7下scrapy基础环境遇到的问题

python-scrapy的编码问题

python scrapy cannot import name xmlrpc_client的解决方案,解决办法

Python爬虫Scrapy框架IP代理的配置与调试