更多>>关于我们
西安鲲之鹏网络信息技术有限公司从2010年开始专注于Web(网站)数据抓取领域。致力于为广大中国客户提供准确、快捷的数据采集相关服务。我们采用分布式系统架构,日采集网页数千万。我们拥有海量稳定高匿HTTP代理IP地址池,可以有效获取互联网任何公开可见信息。
您只需告诉我们您想抓取的网站是什么,您感兴趣的字段有哪些,你需要的数据是哪种格式,我们将为您做所有的工作,最后把数据(或程序)交付给你。
数据的格式可以是CSV、JSON、XML、ACCESS、SQLITE、MSSQL、MYSQL等等。
更多>>技术文章
发布时间:2021-08-15 来源:西安鲲之鹏官微
【经验分析】urllib2使用"User-Agent"设置UA会无效原因的分析
(1)如下代码,尝试使用"User-Agent"设置UA为"test",会失败:
服务端接收到的UA信息为"Python-urllib/2.7",而不是"test"。
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()),代码如下。
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',在字典中覆盖掉了我们自定义的值。
以后使用urllib2要设置UA时,一定要用“User-agent”,而不能用“User-Agent”!
(1)如下代码,尝试使用"User-Agent"设置UA为"test",会失败:
服务端接收到的UA信息为"Python-urllib/2.7",而不是"test"。
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()),代码如下。
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',在字典中覆盖掉了我们自定义的值。
以后使用urllib2要设置UA时,一定要用“User-agent”,而不能用“User-Agent”!
特别说明:该文章为鲲鹏数据原创内容 ,您除了可以发表评论外,还可以转载到别的网站,但是请保留源地址,谢谢!!(尊重他人劳动,我们共同努力)
☹ Disqus被Qiang了,之前的评论内容都没了。如果您有爬虫相关技术方面的问题,欢迎发到我们的问答平台:http://spider.site-digger.com/