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)
很多的网站并不允许之前的方式来进行网页访问;
它们可能会识别出发来网页请求的不是浏览器,这时候,我们就需要完全模拟浏览器;
这时候就需要设置一些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爬虫入门(4):Urllib库的高级用法
- 芝麻HTTP:Python爬虫入门之Urllib库的高级用法
- Python爬虫入门四之Urllib库的高级用法
- Python爬虫入门四之Urllib库的高级用法
- Python爬虫入门四之Urllib库的高级用法
- Python爬虫教程——入门四之Urllib库的高级用法
- Python爬虫入门(4):Urllib库的高级用法
- Python爬虫入门(4):Urllib库的高级用法
- Python爬虫入门四之Urllib库的高级用法
- 转 Python爬虫入门四之Urllib库的高级用法
- Python爬虫入门(4):Urllib库的高级用法
- Python爬虫入门四之Urllib库的高级用法
- [转载]Python爬虫入门四之Urllib库的高级用法
- Python爬虫入门之Urllib库的高级用法 (四)
- Python爬虫入门(4):Urllib库的高级用法
- Python爬虫入门二之Urllib库的高级用法
- python爬虫入门-urllib的基本用法
- Python爬虫Urllib2库的高级用法
- Python爬虫—1入门_1_python内置urllib库的初级用法
- 运维学python之爬虫基础篇(三)urllib模块高级用法