#!/usr/bin/env python #coding=utf-8 ‘‘‘ @这个脚本会显示除urls列表中定义的网页的header, 在请求时,会随机使用已经定义好的my_headers列表中的User-Agent 并且在最后使用chardet模块,显示出此网页使用的编码 ‘‘‘ import urllib2 import random import chardet urls = [‘http://www.mashanggou.com‘] my_headers = [ ‘Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0‘, ‘Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0‘, ‘Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0‘, ‘Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36‘ ] def auto_header(url, headers): ‘‘‘ @这个函数用来设置访问网页时的请求头,‘User-Agent‘使用random随机从my_headers中选择,并且返回urlopen的值 ‘‘‘ bloke_req = urllib2.Request(url) now_url = url.split(‘http://‘)[1] now_header = random.choice(headers) bloke_req.add_header(‘Host‘, now_url) bloke_req.add_header(‘User-Agent‘, now_header) bloke_req.add_header(‘GET‘, url) bloke_html = urllib2.urlopen(bloke_req) return bloke_html if __name__ == ‘__main__‘: for url in urls: html = auto_header(url, my_headers) charset = chardet.detect(html.read()) if ‘gb‘ in charset[‘encoding‘].lower(): #如果这里是gb2312解码的,然后再用gb2312编码,会出现乱码,但是用gbk就不会,暂时不懂什么意思。。。 charset[‘encoding‘] = ‘GBK‘ print ‘%s\n‘ % url.center(60, ‘*‘) print ‘%s\n‘ % html.headers print charset
原文地址:http://anonxiaozi.blog.51cto.com/8139771/1692684