什麼是網頁下載器?python
1、網頁下載器是爬蟲的核心組件cookie
2、經常使用的python網頁下載器有urlilib2基礎模塊和requests第三方插件兩種ide
urllib2支持功能:1.支持直接url下載;2.支持向網頁直接輸入的數據;3.支持須要登錄網頁的cookie處理;4.須要代理訪問的代理處理ui
3、urllib2的三種下載方法加密
方法一.直接下載法url
相應代碼以下:spa
#-*-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的頭信息code
將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()
方法3、添加特殊情境的處理器
有些網頁須要登陸才能訪問,須要添加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")