爬蟲進階之路

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:password@67.205.159.165: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()

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容