成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

python爬蟲基礎之urllib的使用

瀏覽:2日期:2022-06-30 16:41:55
一、urllib 和 urllib2的關系

在python2中,主要使用urllib和urllib2,而python3對urllib和urllib2進行了重構,拆分成了urllib.request, urllib.parse, urllib.error,urllib.robotparser等幾個子模塊,這樣的架構從邏輯和結構上說更加合理。urllib庫無需安裝,python3自帶。python 3.x中將urllib庫和urilib2庫合并成了urllib庫。

urllib2.urlopen() 變成了 urllib.request.urlopen() urllib2.Request() 變成了 urllib.request.Request() python2中的 cookielib 改為 http.cookiejar. import http.cookiejar 代替 import cookielib urljoin 現在對應的函數是 urllib.parse.urljoin

二、python3下的urllib庫 request,它是最基本的 HTTP 請求模塊,我們可以用它來模擬發送一請求,只需要給庫方法傳入 URL 還有額外的參數,就可以模擬實現這個過程了。 error ,即異常處理模塊,如果出現請求錯誤,我們可以捕獲這些異常,然后進行重試或其他操作保證程序不會意外終止。 parse ,是一個工具模塊,提供了許多 URL 處理方法,比如拆分、解析、合并等等的方法。 robotparser,主要是用來識別網站的 robots.txt 文件,然后判斷哪些網站可以爬,哪些網站不可以爬的,其實用的比較少。三、request的基礎類(一)request.urlopen

urlopen方法最主要的參數就是目標網站的url地址,可以使str類型,也可以是一個request對象。

get方法請求如下:

from urllib import request,parserespones = request.urlopen(http://www.baidu.com/)

post方法請求,需要添加data參數(字典格式),它要是字節流編碼格式的內容,即 bytes 類型,通過 bytes() 方法可以進行轉化,另外如果傳遞了這個 data 參數,不添加data參數就默認為 GET 方式請求。

from urllib import request,parseurl = 'http://www.baidu.com/'wd = {’wd’:’哇哈哈哈’}data = bytes(parse.urlencode(wd),’utf-8’)respones = request.urlopen(url,data=data)(二)request.Request

由于單獨使用urlopen() 方法的不能添加User-Agent、Cookie等headers信息,需要構建一個 Request 類型的對象,通過構造這個這個數據結構,一方面我們可以將請求獨立成一個對象,另一方面可配置參數更加豐富和靈活。主要參數有:

url 參數是請求 URL,這個是必傳參數,其他的都是可選參數。 data 參數如果要傳必須傳 bytes(字節流)類型的,如果是一個字典,可以先用 urllib.parse 模塊里的 urlencode() 編碼。 headers 參數是一個字典,這個就是 Request Headers 了,你可以在構造 Request 時通過 headers 參數直接構造,也可以通過調用 Request 實例的 add_header() 方法來添加, Request Headers 最常用的用法就是通過修改 User-Agent 來偽裝瀏覽器,默認的 User-Agent 是 Python-urllib,我們可以通過修改它來偽裝瀏覽器。 origin_req_host 參數指的是請求方的 host 名稱或者 IP 地址。 unverifiable 參數指的是這個請求是否是無法驗證的,默認是False。意思就是說用戶沒有足夠權限來選擇接收這個請求的結果。例如我們請求一個 HTML 文檔中的圖片,但是我們沒有自動抓取圖像的權限,這時 unverifiable 的值就是 True。 method 參數是一個字符串,它用來指示請求使用的方法,比如GET,POST,PUT等等。 通過隨機的方法,選擇user-agent:

import randomUA_LIST = [ ’Mozilla/5.0 (compatible; U; ABrowse 0.6; Syllable) AppleWebKit/420+ (KHTML, like Gecko)’, ’Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Acoo Browser 1.98.744; .NET CLR 3.5.30729)’, ’Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Acoo Browser 1.98.744; .NET CLR 3.5.30729)’, ’Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Acoo Browser; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)’, ’Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; Acoo Browser; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; Avant Browser)’, ’Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.04506)’, ’Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; GTB5; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Maxthon; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)’, ’Mozilla/4.0 (compatible; Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Acoo Browser 1.98.744; .NET CLR 3.5.30729); Windows NT 5.1; Trident/4.0)’, ’Mozilla/4.0 (compatible; Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6; Acoo Browser; .NET CLR 1.1.4322; .NET CLR 2.0.50727); Windows NT 5.1; Trident/4.0; Maxthon; .NET CLR 2.0.50727; .NET CLR 1.1.4322; InfoPath.2)’, ’Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; Acoo Browser; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; InfoPath.1; .NET CLR 3.5.30729; .NET CLR 3.0.30618)’]#隨機獲取一個user-agentuser_agent = random.choice(UA_LIST)添加headers頭部信息的方法1:

url=’http://www.baidu.com/’user_agent = random.choice(UA_LIST)headers = { ’User-Agent’: user_agent}req = request.Request(url=url,headers=headers)respones = request.urlopen(req)添加headers頭部信息的方法2:

url=’http://www.baidu.com’headers = { ’User-Agent’: user_agent}#添加user-agent的方法2req = request.Request(url)#請求添加user-agentreq.add_header('User-Agent',user_agent)#獲取請求的user-agent agent的a要小寫print(req.get_header('User-agent'))response = request.urlopen(req)print(respones.read().decode(’utf-8’))三、request的高級類

在urllib.request模塊里的BaseHandler類,他是所有其他Handler的父類,他是一個處理器,比如用它來處理登錄驗證,處理cookies,代理設置,重定向等。它提供了直接使用和派生類使用的方法:

add_parent(director):添加director作為父類 close():關閉它的父類 parent():打開使用不同的協議或處理錯誤 defautl_open(req):捕獲所有的URL及子類,在協議打開之前調用 Handler的子類包括:

HTTPDefaultErrorHandler:用來處理http響應錯誤,錯誤會拋出HTTPError類的異常HTTPRedirectHandler:用于處理重定向HTTPCookieProcessor:用于處理cookiesProxyHandler:用于設置代理,默認代理為空HTTPPasswordMgr:永遠管理密碼,它維護用戶名和密碼表HTTPBasicAuthHandler:用戶管理認證,如果一個鏈接打開時需要認證,可以使用它來實現驗證功能

(一)ProxyHandler

如果爬蟲需要大量爬取網站數據,為了避免被封號,需要使用代理,通過request.build_opener()方法生成一個opener對象,添加代理的方法如下:

from urllib import request#代理開關,表示是否開啟代理proxyswitch =True#構建一個handler處理器對象,參數是一個字典類型,包括代理類型和代理服務器IP+PORTproxyhandler = request.ProxyHandler({'http':'191.96.42.80:3128'})#如果是帶用戶名和密碼的代理,格式為{'http':'username:passwd@191.96.42.80:3128'}#不加代理的handler處理器對象nullproxyhandler = request.ProxyHandler()if proxyswitch: opener = request.build_opener(proxyhandler)else: opener = request.build_opener(nullproxyhandler)req = request.Request('http://www.baidu.com/')response = opener.open(req)print(response.read().decode('utf-8'))(二)ProxyBasicAuthHandler

通過密碼管理器的方法實現代理服務器功能

from urllib import request#代理密碼管理,也可以管理服務器賬戶密碼#賬戶密碼user = 'username'passwd = 'passwd'#代理服務器proxyserver = '1.1.1.1:9999'#構建密碼管理對象,保存需要處理的用戶名和密碼passmgr = request.HTTPPasswordMgrWithDefaultRealm()#添加賬戶信息,第一個參數realm是與遠程服務器相關的域信息passmgr.add_password(None,proxyserver,user,passwd)#構建基礎ProxyBasicAuthHandler處理器對象proxyauth_handler = request.ProxyBasicAuthHandler(passmgr)opener = request.build_opener(proxyauth_handler)req = request.Request('http://www.baidu.com/')response = opener.open(req)(三)ProxyBasicAuthHandler

通過密碼管理器的方法實現web認證登陸功能

#web驗證from urllib import requesttest = 'test'passwd = '123456'webserver = '1.1.1.1'#構建密碼管理器handlerpasswdmgr = request.HTTPPasswordMgrWithDefaultRealm()#添加密碼信息passwdmgr.add_password(None,webserver,test,passwd)#HTTP基礎驗證處理器類http_authhandler = request.HTTPBasicAuthHandler(passwdmgr)opener = request.build_opener(http_authhandler)req = request.Request('http://'+webserver)response = opener.open(req)四、Cookie處理

通過http.cookiejar中的HTTPCookieProcessor構建cookie處理器對象,處理cookie信息

import http.cookiejarfrom urllib import request,parse#模擬登陸先post賬戶密碼#然后保存生成的cookie#通過CookieJar類構件一個coociejar對象,從來保存cookie值cookie = http.cookiejar.CookieJar()#構件cookie處理器對象,用來處理cookiecookie_handler = request.HTTPCookieProcessor(cookie)#構件一個自定義的openeropener = request.build_opener(cookie_handler)#通過自定義的opener的addheaders參數,可以添加HTTP報頭參數opener.addheaders = [('User-Agent','Mozilla/5.0 (compatible; U; ABrowse 0.6; Syllable) AppleWebKit/420+ (KHTML, like Gecko)'),]#需要登陸的接口url = ’http://www.renren.com/PLogin.do’#需要登陸的賬戶密碼data = { 'email':'renren賬號', 'password':'密碼'}#數據處理data = bytes(parse.urlencode(data),’utf-8’)#第一次是POST請求,通過登陸賬戶密碼,得到cookiereq = request.Request(url,data=data)#發送第一次POST請求,生成登陸后的cookieresponse = opener.open(req)print(response.read().decode('utf-8'))#此時的opener已經包含了該鏈接下的cookie,此時使用該opener就可以直接訪問該站點下其他的網頁而不需要再登陸了opener.open(http://www.renren.com/PLogin.doxxxxxxxxxxxxx)

以上就是python爬蟲基礎之urllib的使用的詳細內容,更多關于python 爬蟲urllib的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
久久久久国产成人精品亚洲午夜| 欧美先锋影音| 欧美亚男人的天堂| 亚洲精品成人在线| 你懂的国产精品永久在线| 韩日精品在线| 国产三级一区二区| 91丝袜美腿高跟国产极品老师| 日韩午夜av一区| 国产99久久久国产精品潘金| 日韩午夜精品视频| 成人av片在线观看| 久久久蜜臀国产一区二区| 不卡影院免费观看| www国产精品av| 成人精品视频一区二区三区| 精品日韩99亚洲| 91在线你懂得| 国产精品久久久久桃色tv| 永久91嫩草亚洲精品人人| 亚洲视频一二三| 国产欧美一区二区三区另类精品| 一区二区三区中文字幕电影| 国产美女在线精品免费观看| 亚洲国产精品一区二区久久| 久久青草久久| 麻豆国产精品视频| 欧美一三区三区四区免费在线看| 成人小视频在线| 欧美激情一区在线观看| 亚洲高清在线观看一区| 亚洲最新视频在线观看| 久久久99爱| 久久国产三级精品| 日韩美女视频在线| 欧美在线亚洲综合一区| 亚洲欧洲性图库| 美女黄色成人网| 九九精品视频在线看| 欧美不卡一区二区三区| 国内久久精品| 午夜精品在线看| 欧美精品乱码久久久久久| 99视频一区二区三区| 中文字幕在线免费不卡| 国产精品推荐精品| 蜜桃久久久久久| 日韩精品一区二区三区在线播放 | 精品久久久久一区二区国产| 93久久精品日日躁夜夜躁欧美| 国产精品国产自产拍高清av王其 | 日本亚洲视频在线| 8x8x8国产精品| 午夜日韩视频| 亚洲电影第三页| 91精品国产aⅴ一区二区| 91视频com| 一区二区三区小说| 欧美日韩精品一区二区在线播放| 国产91精品一区二区| 国产精品久久777777| 久久久久在线| 成人毛片视频在线观看| 亚洲美女免费在线| 欧美日韩www| 国产精品av久久久久久麻豆网| 亚洲va在线va天堂| 日韩三级电影网址| 亚洲黄色影院| 九一久久久久久| 欧美激情在线免费观看| 久久综合狠狠| 91在线丨porny丨国产| 亚洲一区中文在线| 欧美一区二区三区啪啪| 一区三区视频| 激情五月婷婷综合网| 国产女同互慰高潮91漫画| 久久亚洲一区二区| 99久久免费精品高清特色大片| 尤物av一区二区| 欧美一区二区三区四区五区| 激情视频一区二区三区| 美国欧美日韩国产在线播放| 国产日韩欧美不卡在线| 色综合久久久久| 欧美a级一区| 人人精品人人爱| 国产人成亚洲第一网站在线播放 | 欧美激情第六页| 日本欧美在线观看| 国产欧美精品一区二区色综合| 久久久久久一区二区| 欧美激情五月| 蜜桃91丨九色丨蝌蚪91桃色| 中文欧美字幕免费| 欧美日韩国产首页在线观看| 亚洲国产精品日韩| 国产成人午夜99999| 一区二区三区国产豹纹内裤在线| 欧美大度的电影原声| 亚洲一区三区电影在线观看| www.成人网.com| 男男gaygay亚洲| 1000精品久久久久久久久| 欧美丰满高潮xxxx喷水动漫| 国产欧美丝祙| 欧美一区激情| 国产自产视频一区二区三区| 亚洲男女一区二区三区| 精品999久久久| 日本韩国一区二区三区| 1024亚洲| 91在线精品秘密一区二区| 看电影不卡的网站| 91国偷自产一区二区三区观看| 亚洲日本激情| 色综合久久中文综合久久97| 国产最新精品免费| 亚洲午夜在线观看视频在线| 精品一二三四在线| 亚洲国产精品综合小说图片区| 欧美韩日一区二区三区四区| 制服丝袜在线91| 久久国产99| 亚洲二区三区四区| 色综合久久综合| 国产精品99久久久久久久女警 | 久久人人97超碰人人澡爱香蕉| 欧美日韩一区在线观看视频| 国产精品资源在线| 日产国产高清一区二区三区| 亚洲免费av在线| 久久久久国产精品人| 欧美一区二区高清| 欧美三级中文字幕在线观看| 午夜一级久久| 亚洲三级色网| 黑人巨大精品欧美一区二区小视频| www.亚洲精品| 国产ts人妖一区二区| 精品一区二区在线观看| 午夜精品福利一区二区三区av| 17c精品麻豆一区二区免费| 久久久天堂av| 精品精品国产高清a毛片牛牛| 91麻豆精品国产自产在线观看一区 | 亚洲欧美国产77777| 欧美激情一区不卡| 国产色综合一区| 国产亚洲一区二区三区四区 | 亚洲尤物视频在线| 国产精品乱人伦| 久久久精品国产免费观看同学| 精品国产青草久久久久福利| 日韩欧美一区电影| 日韩精品一区二区在线观看| 欧美一区二区视频在线观看2020| 欧美精品一二三四| 欧美日韩一卡二卡三卡| 在线免费观看日韩欧美| 91精彩视频在线| 在线观看日韩精品| 欧美视频中文字幕| 欧美日韩二区三区| 6080国产精品一区二区| 在线播放欧美女士性生活| 在线播放91灌醉迷j高跟美女| 欧美群妇大交群中文字幕| 欧美三级中文字幕在线观看| 欧美日韩精品福利| 欧美一区二区三区喷汁尤物| 欧美mv和日韩mv国产网站| 久久综合九色综合久久久精品综合| 欧美精品一区二| 国产网站一区二区三区| 国产精品污www在线观看| 中文字幕一区二区三区精华液| 亚洲人成精品久久久久| 亚洲男人天堂一区| 亚洲国产成人va在线观看天堂| 亚洲成人www| 日本欧美肥老太交大片| 国产亚洲欧美一区二区| 亚洲综合日韩| 老**午夜毛片一区二区三区| 在线区一区二视频| 欧美人动与zoxxxx乱| 日韩免费视频一区二区| 久久久一区二区| 亚洲欧洲性图库| 亚洲成在线观看| 裸体在线国模精品偷拍| 国产成人在线免费| 色综合天天综合网天天看片| 亚洲国产成人不卡| 午夜综合激情| 精品污污网站免费看| 欧美成人精品二区三区99精品| 久久久久综合网|