;
关注kaiyun官方网站掌握最新行业动态与资讯
当前位置: 首页 > kaiyun新闻 > 公司新闻

kaiyun.com鲲鹏Web数据抓取 - 专业Web数据采集服务提供商

发布日期:2024-03-29 访问量: 来源:kaiyun官方网站

【经验分析】urllib2使用"User-Agent"设置UA会无效原因的分析

(1)如下代码,尝试使用"User-Agent"设置UA为"test",会失败:
服务端接收到的UA信息为"Python-urllib/2.7",而不是"test"。kaiyun开云
urllib2.build_opener().open(urllib2.Request(url='http://192.168.1.200:1234', data=None, headers={'User-Agent': 'test'}))
(2)将headers修改为{'User-agent': 'test'},成功。
如附图1所示。原因是什么呢?

可以在urllib2.py中找到答案:
(1)首先urllib2默认会在headers列表中添加一个“User-agent”,其值为"Python-urllib/%s" % __version__,如附图2所示。
(2)在do_open()中对headers进行了规范化处理(.title()),代码如下。kaiyun

鲲鹏Web数据抓取 - 专业Web数据采集服务提供商

headers = dict((name.title(), val) for name, val in headers.items())
如图3所示,我们在该句前后分别打印headers,处理之前为:
{'Host': '192.168.1.200:1234', 'User-Agent': 'test', 'Connection': 'close', 'User-agent': 'Python-urllib/2.7'},里面有我们设置的'User-Agent': 'test'
处理之后就变成下面了:
{'Host': '192.168.1.200:1234', 'Connection': 'close', 'User-Agent': 'Python-urllib/2.7'}
原因是后面的'User-agent'经过.title()后也会变'User-Agent',在字典中覆盖掉了我们自定义的值。

鲲鹏Web数据抓取 - 专业Web数据采集服务提供商

以后使用urllib2要设置UA时,一定要用“User-agent”,而不能用“User-Agent”!

返回列表
分享:

Copyright © 2019 kaiyun官方网站股份有限公司.粤ICP备16017609号

粤公网安备44030402003674号

网站地图 | XML地图

微信关注 微信关注
微博
0755-83218588
TOP