1. 程式人生 > >爬蟲學習——網頁下載器和urllib2模塊

爬蟲學習——網頁下載器和urllib2模塊

處理器 請求 aid none pro 調用 tps jar header

什麽是網頁下載器?

一、網頁下載器是爬蟲的核心組件

技術分享

二、常用的python網頁下載器有urlilib2基礎模塊和requests第三方插件兩種

urllib2支持功能:1.支持直接url下載;2.支持向網頁直接輸入的數據;3.支持需要登陸網頁的cookie處理;4.需要代理訪問的代理處理

三、urllib2的三種下載方法

方法一.直接下載法

技術分享

相應代碼如下:

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

#調用urllib2模塊
import urllib2 

#直接請求
response=urllib2.urlopen("http://www.baidu.com")

#獲取狀態碼,如果是200表示成功
print response.getcode() #讀取爬取得內容 print response.read()

方法2:添加data和http

data:即用戶需要輸入的數據

http-header:主要是為了提交http的頭信息

將url、data、header三個參數傳遞給urllib2的Request類,生成一個request對象,接著再使用urllib2中的urlopen方法,以request作為參數發送網頁請求

技術分享

相應代碼如下:

技術分享
 1 #coding=utf-8
 2 import urllib2
 3 
 4 #創建Request對象
 5 request= urllib2.Request("
所要爬取的url") 6 7 #添加數據a=1 8 request.add_data(a,1) 9 10 #添加http的header 11 request.add_header(User-Agent,Mozilla/5.0) 12 13 #發送請求獲取結果 14 response= urllib2.urlopen(request) 15 16 print response.getcode() 17 18 print response.read()
方法二代碼示例

方法三、添加特殊情境的處理器

有些網頁需要登錄才能訪問,需要添加cookie進行處理,這裏使用HTTPCookieProcessor

需代理才能訪問的使用:ProxyHandler

使用https加密協議的網頁:HTTPSHandler

有的url相互自動的跳轉關系:HTTPRedirectHandler

將這些handler傳送給urllib2的build_opener(handler)方法來創建opener對象,在傳送給install_opener(opener),之後urllib2就具有了這些場景的處理能力

技術分享

代碼如下:cookie增強處理

技術分享
 1  #-*-coding:utf-8-*-
 2 
 3 #引入urllib2和cookielib模塊
 4 import urllib2,cookielib
 5 
 6 #創建cookie容器,來存儲cookie的數據
 7 cj=cookielib.CookieJar()
 8 
 9 #創建一個opener,然後使用urllib2的HTTPCookieProcessor以cj的cookiejar作為參數生成一個handler,再將此handler傳給build_opener方法生成一個opener對象
10 opener = urlib2.build_opener(urllib2.HTTPCookieProcessor(cj))
11 
12 #然後給urllib2安裝opener來增強他的處理器
13 urllib2.install_opener(opener)
14 
15 #使用帶有cookie的urllib2 訪問網頁,實現網頁的爬取
16 response = urllib2.urlopen("http://www.baidu.com")
增強處理

爬蟲學習——網頁下載器和urllib2模塊