简单 python爬虫 <1>

#!/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


你可能感兴趣的:(简单,python爬虫,<1>)