爬虫进阶之路

1.自定义数据请求方式

handler = urllib2.HTTP/HTTPSHandler()
opener = urllib2.build_handler(handler)
opener.open(request)

代码操作:

# -*- coding:utf-8 -*-

import urllib2
import urllib
'''
request = urllib2.Request("http://www.baidu.com")

response = urllib2.urlopen(request)

print response.read()
'''
# 创建一个HTTP处理器对象
http_handler = urllib2.HTTPHandler()
# 创建一个打开方式对象
opener = urllib2.build_opener(http_handler)
# 通过自定义的打开方式,打开目标网址,获取目标网址服务器返回的响应对象
response = opener.open("http://www.baidu.com")
# 读取响应对象中的数据
print response.read()

2.自定义代理处理器

urllib2.ProxyHandler({"http":"ip:port"})
urllib2.ProxyHandler({"http":"user:pass@ip:port"})

代码操作:

import urllib2

# 创建一个代理对象处理器
# 使用免费的代理进行处理器的创建
# proxy_handler = urllib2.ProxyHandler({"http":"67.205.159.165:3128"})
# 使用私密代理进行处理器的创建【账号 + 密码】
proxy_handler = urllib2.ProxyHandler({"http" : "username:[email protected]:3128"})

# 创建一个请求发送对象
opener = urllib2.build_opener(proxy_handler)

# 创建请求对象
request = urllib2.Request("http://www.baidu.com")

# 发送请求,获取服务器返回的响应对象
response = opener.open(request)

# 获取数据
print response.read()

3.密码管理器

HttpPasswordMgrWithDefaultRealm()
1、ProxyBasicAuthHandler()授权代理处理器
2、HttpBasicAuthHandler()验证web客户端授权处理器

代码操作:

# -*- coding:utf-8 -*-

import urllib
import urllib2

# 准备数据
ftp_server = "192.168.1.100"
username = "root"
password = "123456"

# 创建一个密码管理器对象
pass_mgr = urllib2.HttpPasswordMgrWithDefaultRealm()

# 增加要管理服务器
pass_mgr.add_password(None, ftp_server, username, password)

# 创建一个web验证处理器
http_auth_handler = urllib2.HTTPBasicAuthHandler(pass_mgr)

# 构建一个请求对象
request = urllib2.Request("http://image.baidu.com")

# 创建自定义打开方式对象【开锁人】
opener = urllib2.build_opener(http_auth_handler)

# 发送请求,获取服务器的响应对象
response = opener.open(request)

# 获取响应中的数据
content = response.read()

# 处理数据。。。。。

4.Cookie 模拟登陆

cookie = cookielib.CookieJar()
handler = urllib2.HTTPCookieProcess(cookie)

代码操作:

# -*- coding:utf-8 -*-

import urllib
import urllib2
import cookielib

# 创建一个Cookie对象
cookie = cookielib.CookieJar()

# 创建一个处理器对象
cookie_handler = urllib2.HTTPCookieProcessor(cookie)

# 创建一个请求打开方式
opener = urllib2.build_opener(cookie_handler)

# 构建请求对象
url = "http://www.renren.com/PLogin.do" # http://www.renren.com/SysHome.do
data = urllib.urlencode({"email":"test", "password":"123"})

request = urllib2.Request(url, data)

# 发送请求,访问数据,得到响应对象
response = opener.open(request)

# 获取数据
content = response.read()

print content

5.加载全局opener

urllib2.install_opener(opener)
urllib2.urlopen(..)

代码操作:

# -*- coding:utf-8 -*-
import urllib
import urllib2

http_handler = urllib2.HTTPHandler()

opener = urllib2.build_opener(http_handler)

request = urllib2.Request("http://tieba.baidu.com")

urllib2.install_opener(opener)

response = urllib2.urlopen(request)

print response.read()

你可能感兴趣的:(爬虫进阶之路)