scrapy中shell出现403解决方案

image

我们使用scrapy shell来进行调试是很方便的,但是有时会出现403错误的问题,我们来解决这个问题:

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

因为有的网站有反爬机制,当你使用scrapy shell的时候是以是scrapy爬虫的标识进行访问网站的,这时候网站会拒绝为爬虫提供服务,这时候就会返回403错误

下面列举三个方案来解决这个问题,三个方案的原理都是一样的,即修改user-agent的值,使用浏览器的标识来对网站进行访问,这样网站就不会拒绝服务了


方案一:只治标.

在使用scrapy shell的时候,在其后面加上-s USER_AGENT='Mozills/5.0’

eg: 我们要对百度进行scrapy shell的时候

scrapy shell http://www.baidu.com -s USER_AGENT='Mozills/5.0'

成功!!!


方案二:半治标半治本.

修改scrapy项目里的settings.py USER_AGENT

把settings.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 shell:

(注意:这里的scrapy shell只能在项目里使用,直接在cmd中使用是不生效的,这也是为什么说半治标的原因)

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

我们看一下返回的信息:

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

返回200,成功!!!


图片标题

方案三: 治本.

修改整个python的default_settings.py文件里的默认USER_AGENT值

之后在不管是在项目中还是在cmd中使用scrapy shell,都是以浏览器的标识符来进行访问的了

找一下default_settings.py文件的位置

我的default_settings.py文件在C:\ProgramData\Anaconda3\Lib\site-packages\scrapy\settings下

找到文件位置后,打开文件,修改 USER_AGENT的值

原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'  

再进行scrapy shell:

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

看一下返回的信息:

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

返回200,成功!!!

猜你喜欢

转载自blog.csdn.net/qq_37462361/article/details/87860025
今日推荐