专栏名称: Python学习交流
每天更新,更新python相关的知识。希望诸君有所收获!
目录
相关文章推荐
Python爱好者社区  ·  史上最强!PINN杀疯了 ·  昨天  
Python爱好者社区  ·  英伟达憾失DeepSeek关键人才?美国放走 ... ·  昨天  
Python爱好者社区  ·  DeepSeek创始人梁文锋个人履历 ·  3 天前  
Python开发者  ·  o3-mini 碾压 DeepSeek ... ·  6 天前  
Python开发者  ·  请立即拿下软考证书(政策风口) ·  4 天前  
51好读  ›  专栏  ›  Python学习交流

爬取网站时请求被拒绝?scrapy轻松解决请求头设置!就是不讲道理

Python学习交流  · 公众号  · Python  · 2018-06-23 14:46

正文


默认请求头

命令行执行,新建爬虫

scrapy startproject myspidercd myspider scrapy genspider scrapy_spider httpbin.org

我们通过对 https://httpbin.org/get?show_env=1 的请求,查看本次请求的浏览器信息,可以打开看一看是否是自己的浏览器信息


将返回的文本复制到 https://www.json.cn/ 格式化成便于查看的json格式,下面操作亦然,不再赘述。


修改请求头

既然这样的话,那我们修改下请求头,达到伪造的效果

打开下面的链接,选一个自己喜欢的请求头

http://www.useragentstring.com/pages/useragentstring.php?name=Chrome

这里使用chrome浏览器请求头


再次访问,发现我们的请求头已经成功更换

"User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36",

方式三:链接设置

此方法对单个链接生效, 只是此次请求的这个链接享受

在Request方法中设置headers参数


方法四:中间件设置

此方法可以从整个项目中去修改请求头的设置规则,变化多端,不同的写法,可以配置出不同的设置方式,下面是一个比较简单的示例

我们参考scrapy默认处理请求头的中间件

from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware

编写中间件


作用优先级

如果作如下设置

# settings.pyUSER_AGENT = "settings"
# scrapy_spider.pycustom_settings = { "USER_AGENT": "custom_settings", }headers={"User-Agent": "header"}

运行效果为:

"User-Agent":"header"

注释掉headers

"User-Agent":"custom_settings"

注释掉custom_settings

"User-Agent":"custom_settings"

注释掉settings

"User-Agent":"Scrapy/1.1.2 (+http://scrapy.org)"

可见优先级为:

headers > custom_settings > settings.py > Scrapy默认

注意

注意User-Agent参数的写法

headers={"User-Agent": USER_AGENT})

如果写错了,很可能发生奇怪的事情







请到「今天看啥」查看全文


推荐文章
Python爱好者社区  ·  史上最强!PINN杀疯了
昨天
Python爱好者社区  ·  DeepSeek创始人梁文锋个人履历
3 天前
Python开发者  ·  请立即拿下软考证书(政策风口)
4 天前
学生时代  ·  2017年我们还会在一起吗
8 年前
亿邦动力  ·  京东用户数据泄露,官方回复亮了
8 年前
美好滁州  ·  幽默一刻!
8 年前