python中使用urllib2伪造HTTP报头的2个方法
在采集网页信息的时候,经常需要伪造报头来实现采集脚本的有效执行
下面,我们将使用urllib2的header部分伪造报头来实现采集信息
方法1、
#!/usr/bin/python #-*-coding:utf-8-*- #encoding=utf-8 #Filename:urllib2-header.py importurllib2 importsys #抓取网页内容-发送报头-1 url="https://www.nhooo.com" send_headers={ 'Host':'www.nhooo.com', 'User-Agent':'Mozilla/5.0(WindowsNT6.2;rv:16.0)Gecko/20100101Firefox/16.0', 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Connection':'keep-alive' } req=urllib2.Request(url,headers=send_headers) r=urllib2.urlopen(req) html=r.read()#返回网页内容 receive_header=r.info()#返回的报头信息 #sys.getfilesystemencoding() html=html.decode('utf-8','replace').encode(sys.getfilesystemencoding())#转码:避免输出出现乱码 printreceive_header #print'####################################' printhtml
方法2、
#!/usr/bin/python #-*-coding:utf-8-*- #encoding=utf-8 #Filename:urllib2-header.py importurllib2 importsys url='https://www.nhooo.com' req=urllib2.Request(url) req.add_header('Referer','https://www.nhooo.com/') req.add_header('User-Agent','Mozilla/5.0(WindowsNT6.2;rv:16.0)Gecko/20100101Firefox/16.0') r=urllib2.urlopen(req) html=r.read() receive_header=r.info() html=html.decode('utf-8').encode(sys.getfilesystemencoding()) printreceive_header print'#####################################' printhtml