scrapy下载图片报[scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt:错误[通俗易懂]

scrapy下载图片报[scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt:错误[通俗易懂]本文转自:http://blog.csdn.net/zzk1995/article/details/51628205先说结论,关闭scrapy自带的ROBOTSTXT_OBEY功能,在setting找到这个变量,设置为False即可解决。使用scrapy爬取淘宝页面的时候,在提交http请求时出现debug信息Forbiddenbyrobots.txt,看来是请求被拒绝了。…

大家好,又见面了,我是你们的朋友全栈君。

本文转自:http://blog.csdn.net/zzk1995/article/details/51628205

 

先说结论,关闭scrapy自带的ROBOTSTXT_OBEY功能,在setting找到这个变量,设置为False即可解决。
使用scrapy爬取淘宝页面的时候,在提交http请求时出现debug信息Forbidden by robots.txt,看来是请求被拒绝了。开始因为是淘宝页面有什么保密机制,防止爬虫来抓取页面,于是在spider中填入各种header信息,伪装成浏览器,结果还是不行。。。用chrome抓包看了半天感觉没有影响简单页面抓取的机制(其他保密机制应该还是有的,打开一个页面时,向不同服务器递交了很多请求,还设定了一些不知道干啥的cookies),最后用urllib伪造请求发现页面都能抓取回来。于是上网查了一下robot.txt是什么,发现原来有个robot协议,终于恍然大悟:
我们观察scrapy抓包时的输出就能发现,在请求我们设定的url之前,它会先向服务器根目录请求一个txt文件:

2016-06-10 18:16:26 [scrapy] DEBUG: Crawled (200) <GET https://item.taobao.com/robots.txt> (referer: None) 
  • 1
  • 2

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

User-agent: * Disallow: /
  • 1
  • 2

可以看见,淘宝disallow根目录以下所有页面。。。。(似乎有新闻说淘宝关闭了爬虫对它们的爬取权限,因为涉及到用户隐私)所以scrapy就停止了之后的请求和页面解析。
我们在setting改变ROBOTSTXT_OBEY为False,让scrapy不要遵守robot协议,之后就能正常爬取了。

2016-06-10 18:27:38 [scrapy] INFO: Spider opened 2016-06-10 18:27:38 [scrapy] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2016-06-10 18:27:38 [scrapy] DEBUG: Crawled (200) <GET https://item.taobao.com/xxxxxxx> (referer: None) 
  • 1
  • 2
  • 3
  • 4

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

 

本文来源:http://blog.csdn.net/zzk1995/article/details/51628205

转载于:https://www.cnblogs.com/jiuyang/p/7742524.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131374.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 整理关于web项目如何防止CSRF和XSS攻击的方法

    整理关于web项目如何防止CSRF和XSS攻击的方法

    2021年10月13日
    46
  • 模拟电路与数字电路基础知识点总结

    模拟电路与数字电路基础知识点总结最近模电真的是让人头疼,模电马上就要结课了,而我的只是水平还停留在第一章第一节,总结起来就是老师讲课听不懂,我又不想听,再加上老师又不想把分给我们,所以我慌了,就再csdn上查找了一下有没有大佬对模电只是点进行过总结;世界之大,总有大佬的:废话不多说,直接上链接,赶快去膜拜:模拟电路与数字电路基础知识点总结千万不要挂科啊~!!!!!!!!!1…

    2022年6月20日
    30
  • u盘越狱卡代码怎么办_使用爱思助手制作越狱U盘教程

    u盘越狱卡代码怎么办_使用爱思助手制作越狱U盘教程U盘越狱iPhone绕ID最新教程及各种坑解决,吐血之作(超详细超简单教程)-balenaEtcher-Checkm8-bootra1n这是安装多个苹果版本及虚拟机版本后成功的教程,由于资源上传到百度云盘下载只有几十KB,所以为了大家能够尽快的体验上苹果系统,文章中涉及的所有工具请大家加QQ群进行交流下载:1064543120一、工具下载准备一台Windows系统电脑准备一个>2G存储U盘下载群文件中balenaEtcher、Checkm8.info_iCloudBypass、bootr

    2025年12月11日
    3
  • VScode 配置 Java 开发环境 (VSCode 天下第一!!!!!)

    VScode 配置 Java 开发环境 (VSCode 天下第一!!!!!)VScode配置Java环境1.下载JDK方式一:手动下载JDKOracleJavaSEAdoptOpenJdkAzulZuluforAzure-EnterpriseEdition方式二:VSCode中下载JDK按下Ctrl+Shift+P输入Java:ConfigureJavaRuntime2.添加JDK环境下面两种方式只…

    2022年6月8日
    57
  • Uefi安装Centos7出现错误以及解决方法

    Uefi安装Centos7出现错误以及解决方法写这篇就当是学习的笔记和总结。文笔不好有什么错别字或不通的地方大家多担待。很少使用Linux系统,前段时间因工作需要,要在一台服务器上安装centos7,服务器默认的引导方式是Uefi,下载ISO镜像用UltraISO刻U盘后引导安装但是报错,进后dracut#命令行,当时完全是懵的一堆英文单字没几个认识。只能百度搜索出错原因和解决方法,以下就是网上说的方法和自己实践的总结。…

    2022年6月25日
    35
  • 清除cookie的方法_js设置cookie

    清除cookie的方法_js设置cookieJavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的。而cookie是运行在客户端的,所以可以用JS来设置cookie.一:设置co

    2022年8月1日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号