您的位置:首页 > 编程语言 > Python开发

python-12:怎么在爬虫代码中伪装header

2015-11-24 00:00 573 查看


还是这张图,我们看到,header中有很多信息,究竟哪一个是我们需要的呢
其实有可能一个也不需要,有可能全部都需要,这取决于你访问的网页的服务器需不需要你提供这些信息
最常用到的两个信息是:User-Agent和Referer

User-Agent:用户代理。是一种向访问网站提供你所使用的浏览器类型、操作系统及版本、CPU 类型、浏览器渲染引擎、浏览器语言、浏览器插件等信息的标识。UA字符串在每次浏览器 HTTP 请求时发送到服务器

Referer:HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理

其他的信息有可能用不到,但是用到的时候在网页中按之前的方法找到并一个一个的加上去就可以了

那么,我们应该怎样在怎么在爬虫代码中伪装header呢?
这需要两个步骤,定义、发送:
1. 定义header,即将header传入
2. 将header发送出去

1. 定义header,即将header传入
我们知道,header里面有很多的内容,比如User-Agent、Referer 等等,每个内容都有自己的值,我们在定义header的时候,要将内容和值一一对应的传入
等等,"将内容和值一一对应",这种数据类型不就是字典吗,好,那我们就创建一个字典

headers = {'User-agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv
:40.0) Gecko/20100101 Firefox/40.0'}


额........ 这个好像有点丑啊,换种写法

user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Geck
o/20100101 Firefox/40.0'
headers = {'User-agent':user_agent}


OK,现在来考虑怎么将这个header发送出去

注:这里的user_agent 是我的浏览器的数据,你们在编写代码的时候要按照前面说的方法将你自己使用的浏览器的user_agent填下去

2. 将header发送出去
这需要使用到urllib2.Request() 函数
在前面"最简单的爬虫程序"中遇到 Request() 函数,当时只是用来规范代码的书写,但是Request() 函数的功能不止如此,现在再一次用到,我们就来深入的学习

urllib2.Request()的功能是构造一个请求信息,返回的req就是一个构造好的请求
函数原型:urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable])

url表示目标网页地址,可以是字符串,也可以是请求对象Request
data表示post方式提交给目标服务器的参数
headers表示用户标识,是一个字典类型的数据,有些不允许脚本的抓取,所以需要用户代理
origin_req_host表示请求方的主机域名或者ip地址
unverifiable还没搞懂


所以 ,伪装header的代码应该这样写

user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Geck
o/20100101 Firefox/40.0'
headers = {'User-Agent':user_agent}
request = urllib2.Request(url,headers)


好了,我们在原来代码的基础上加入伪装header的部分并修改
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 爬虫