版权声明本文来自:https://blog.csdn.net/qq_37462361/article/details/87860025

进入正题:

  出现 403,表示网站拒绝提供服务

  (因为很多网站都有反爬机制,其实使用 scrapy shell 的时候就是以 scrapy 爬虫的标志进行访问的,所以网站回拒绝爬虫的服务,返回 403)

解决方案:

  方案一:只治标,不治本

    在使用scrapy 的时候在最后加上 -s USER-AGENT = "Mozills/5.0"

    eg: 

scrapy shell "https://movie.douban.com" -s USER_AGENT='Mozills/5.0

  方案二:半治标半治本

    修改scrapy 中 setting.py 文件的 USER-AGENT

    修改前:

#USER_AGENT = 'yi (+http://www.yourdomain.com)'

  修改后:

USER_AGENT = 'Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0'

  注意:

    这里的 scrapy 只能在 scrapy 中使用,直接在cmd 中使用不生效,这就是作者说的半指标半治本

scrapy shell https://movie.douban.com/top250

  我们可以看见返回成功的信息:

response   <200 https://movie.douban.com/top250>

  方案三:治愈

    直接修改 python 的defult_setting.py 文件里默认的 USER-AGENT值

    (那么之后不管实在项目中还是再 cmd 中使用 scrapy shell ,都是以浏览器的标识阱行访问网站的)、

    那么 找到 defult_setting.py 文件的位置;

      一般在你安装 python 的目录下的 /lib/site-package/scrapy/deting.py中 找到 user-agent进行修改:

    修改前:

USER_AGENT = 'Scrapy/%s (+http://scrapy.org)' % import_module('scrapy').__version__

    修改后:

USER_AGENT = 'Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0'  

  现在不管是在 cmd 中还是在 scrapy 项目中执行 scrapy shell 的时候都会返回 200 成功!

  

02-12 03:32