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

Python爬虫—1入门_2_python内置urllib库的高级用法

2017-04-06 19:18 946 查看
1、设置Headers
     很多的网站并不允许之前的方式来进行网页访问;
     它们可能会识别出发来网页请求的不是浏览器,这时候,我们就需要完全模拟浏览器;
     这时候就需要设置一些headers属性。
     下面介绍一些比较重要的headers属性需要设置:
     user-agent:发出网页请求的浏览器信息
     referer:反盗链,存放的是当前请求的网址

     cookie:身份识别信息,比如登录状态、用户信息、session信息等
          以下是例程:

import urllib
import urllib2
url = "http://www.u148.net/ajax/user/login"
user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64)"
referer = "http://www.u148.net/ajax/user/login"
headers = {"user-agent": user_agent, "referer": referer}
values = {"uname":"zhoushuo_19@126.com""password":"XXXXXXX"}
data = urllib.urlencode(values)
request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request)
print response.read()

2、Proxy(代理)的设置
     有部分网站会限制同一个ip的访问次数,用于防止爬虫或者ddos攻击;
     当访问次数过多时,就会禁止该ip的访问,这时就需要设置一些代理服务器;
     每隔一段时间就换一个代理。
     因为普通的urlopen()函数不支持验证、cookie或者其他HTTP高级功能;
     这里需要使用build_opener( )函数创建自定义的opener对象,用以支持上述功能;
     build_opener([handler1 [handler2 ... ]])
     handler是Handler实例,常用的有HTTPBasicAuthHandler、HTTPCookieProcessor、ProxyHandler等
     install_opener(opener)
     安装不同的opener对象作为urlopen( )使用的全局opener

import urllib2
enable_proxy = True
proxy_handler = urllib2.ProxyHandler({"http":"http://some-proxy.com:8080"})
null_proxy_handler = urllib2.ProxyHandler({})
if enable_proxy:
    opener = urllib2.build_opener(proxy_handler)
else:
    opener = urllib2.build_opener(null_proxy_handler)
urllib2.install_opener(opener)

3、Timeout设置
     设置超时,解决一些网站相应时间过长造成的影响

import urllib2
response = urllib2.urlopen("http://www.baidu.com", timeout = 10)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 爬虫