版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
項(xiàng)目四
Urllib3請求模塊庫任務(wù)1:安裝Urllib3請求模塊庫任務(wù)2:發(fā)送請求任務(wù)1:安裝Urllib3請求模塊庫任務(wù)引入小白問老師:“我自己瀏覽網(wǎng)頁,可以手動將數(shù)據(jù)保存下來啊,為什么要寫個程序去爬取數(shù)據(jù)呢?老師說,很簡單,網(wǎng)絡(luò)爬蟲不但能夠模仿用戶瀏覽網(wǎng)頁,并將所想要的頁面中的信息保存下來,還能夠在短時(shí)間內(nèi)訪問成千上萬的頁面,并且在短時(shí)間內(nèi)將海量數(shù)據(jù)保存下來,這速度可遠(yuǎn)遠(yuǎn)超越了人工手動瀏覽網(wǎng)頁的速度。你沒感覺到爬蟲的好處,代表你需要學(xué)習(xí)的只是基本內(nèi)容,需要學(xué)習(xí)高級應(yīng)用。那么,Python中還有哪些高級功能模塊?如何實(shí)現(xiàn)這些功能?知識準(zhǔn)備Urllib3是一個用于HTTP客戶端的Python三方庫,Urllib3功能非常強(qiáng)大,使用卻十分簡單。安裝Urllib3模塊庫包括兩種方法,使用pip工具和Anaconda3工具。一、安裝AnacondaAnaconda是一個專門用于統(tǒng)計(jì)和機(jī)器學(xué)習(xí)的IDE,它集成了Python和許多基礎(chǔ)的庫,直接安裝Anaconda,省去許多復(fù)雜的配置過程。1.下載登陸Anaconda的官網(wǎng):/products/individual#macos單擊“Download(下載)”按鈕,下載Anaconda3-2021.11-Windows-x86_64.exe文件,如圖所示。2.安裝安裝界面安裝協(xié)議對話框選擇安裝類型對話框安裝路徑對話框安裝選項(xiàng)設(shè)置界面安裝過程界面安裝完成安裝信息顯示界面3.驗(yàn)證安裝結(jié)果安裝完成后,在開始→Anaconda3(64-bit)下顯示安裝后的6個圖標(biāo),如圖所示。
安裝完成界面安裝的程序啟動AnacondaNavigator
運(yùn)行程序二、Urllib3安裝:本書介紹使用兩種工具安裝Urllib3。1.使用pip安裝在“開始”下面的搜索欄中輸入“cmd”,打開命令提示符界面,顯示下面的用戶名(不同的用戶顯示用戶名不同)。升級成功后顯示圖所示的信息。2.使用Anaconda安裝搜索庫3.PyCharm安裝使用pip(pip3)工具或Anaconda在下載、安裝Urllib3模塊庫后,可以在ShellIDLE中使用,但若在PyCharm中使用該模塊,需要另行安裝。4.導(dǎo)入當(dāng)一個模塊安裝完畢,就可以被其他地方引用,Python導(dǎo)入模塊一般使用import安裝成功信息任務(wù)2:發(fā)送請求任務(wù)引入小白使用urllib庫中函數(shù)爬取網(wǎng)站數(shù)據(jù),發(fā)現(xiàn)不是所有網(wǎng)站都可以被訪問,同時(shí)經(jīng)常出現(xiàn)被封IP的情況。如何解決這些問題呢?可以考慮使可以實(shí)現(xiàn)哪些復(fù)雜的網(wǎng)絡(luò)請求?知識準(zhǔn)備urllib3模塊庫主要使用代理IP進(jìn)行網(wǎng)絡(luò)請求的訪問,所以訪問之前需要創(chuàng)建一個代理IP對象。同時(shí),urllib3模塊庫提供了很多python標(biāo)準(zhǔn)庫urllib沒有的重要特性:線程安全代理IP客戶端SSL/TLS驗(yàn)證文件分部編碼上傳協(xié)助處理重復(fù)請求和HTTP重定位支持壓縮編碼支持HTTP和SOCKS代理一、創(chuàng)建代理對象urllib3主要使用連接池進(jìn)行網(wǎng)絡(luò)請求的訪問,所以訪問之前需要先創(chuàng)建一個連接池對象。PoolManager函數(shù)用來構(gòu)造PoolManager對象,然后通過PoolMagent中的request函數(shù)或urlopen函數(shù)生成請求,訪問一個網(wǎng)頁。參數(shù)說明:url:需要抓取的URL地址;method:指定的請求方式,如GET、POST、PUT。fields:向請求中添加的參數(shù),通過字典形式定義headers:向請求中添加的請求頭信息**urlopen_kw:其他關(guān)鍵字參數(shù)。得到返回的響應(yīng)HTTPResponse對象response后,根據(jù)不同要求輸出響應(yīng)數(shù)據(jù)的不同內(nèi)容,具體屬性方法如下:response.status_code:狀態(tài)碼response.url:請求urlresponse.encoding:查看響應(yīng)頭部字符編碼response.cookies:cookie信息response.headers:頭信息response.text:文本形式的響應(yīng)內(nèi)容response.content:二進(jìn)制字節(jié)形式的響應(yīng)內(nèi)容response.json:JS0N形式的響應(yīng)內(nèi)容案例——獲取郵箱登陸界面的響應(yīng)對圖所示的126郵箱登陸界面,獲取代理IP,通過發(fā)送PUT請求,獲取網(wǎng)頁源代碼的頭信息headers。二、請求方法request函數(shù)中的請求方法通過method指定,常用請求方法參數(shù)如下:POST表示向指定資源提交數(shù)據(jù)進(jìn)行處理請求;GET表示向特定的資源發(fā)出請求;PUT表示向指定資源位置上傳其最新內(nèi)容;HEAD表示向服務(wù)器索與GET請求相一致的響應(yīng),只不過響應(yīng)體將不會被返回。案例——獲取淘寶不同請求的響應(yīng)對圖所示的淘寶首頁,使用代理IP,發(fā)送不同方法的請求,獲取網(wǎng)頁源代碼的狀態(tài)碼,顯示發(fā)送請求是否成功。三、定義請求頭請求頭參數(shù)headers用于添加附加信息,在發(fā)送請求中添加請求頭包括下面兩種方法:如果在初始化PoolManager時(shí)定義了headers,那么之后每次使用PoolManager進(jìn)行訪問時(shí),都將使用該headers來進(jìn)行訪問。在request函數(shù)中定義一個字典類型(dictionary),作為header參數(shù)傳入請求。案例——獲取帶請求頭的響應(yīng)在請求頭headers參數(shù)中定義響應(yīng)體數(shù)據(jù)格式為gif圖片格式,創(chuàng)建代理對象,使用request函數(shù)發(fā)送請求,獲取編碼后的響應(yīng)數(shù)據(jù)。請求頭headers還可以設(shè)置下面的參數(shù):(1)Connection參數(shù)(2)cookies參數(shù)四、設(shè)置代理IPProxyManager函數(shù)用于創(chuàng)建一個用于所有HTTP連接和單個服務(wù)器的HTTPConnectionPool。案例——使用代理IP發(fā)送請求創(chuàng)建代理對象,定義IP地址,發(fā)送帶請求頭的請求,獲取代理IP地址。五、自動重試受服務(wù)器和網(wǎng)絡(luò)影響,無法保證網(wǎng)絡(luò)請求一次就能成功,有時(shí)需要多嘗試幾次,這個過程就是自動重試。urllib3模塊庫支持這種自動重試請求。request函數(shù)中的retries參數(shù)用來指定自動重試次數(shù),默認(rèn)re-try為3次。響應(yīng)respose的屬性函數(shù)retries.total顯示重試次數(shù)。重試不是無限制的嘗試,重試條件參數(shù)如下:連接時(shí)的錯誤:異常為ConnectTimeoutError,對應(yīng)參數(shù)connect讀取時(shí)的錯誤:異常為ReadTimeoutError和ProtocolError,對應(yīng)參數(shù)read其它錯誤:對應(yīng)參數(shù)other重定向:每重定向一次消耗一次重試次數(shù),對應(yīng)參數(shù)redirect上面的參數(shù)默認(rèn)為None,如果這些參數(shù)為False,表示發(fā)生該種情況時(shí),不會再次請求,而是直接拋出對應(yīng)的異常。案例——發(fā)送重試請求除了使用重試默認(rèn)參數(shù)定義重試次數(shù),Retry函數(shù)還可以定義重試次數(shù)total、重試間隔backoff_factor異常信息等參數(shù)。六、
重定向在網(wǎng)站建設(shè)中,時(shí)常會遇到需要網(wǎng)頁重定向的情況:網(wǎng)站調(diào)整(如改變網(wǎng)頁目錄結(jié)構(gòu));網(wǎng)頁被移到一個新地址;網(wǎng)頁擴(kuò)展名改變(如應(yīng)用需要把.php改成.Html或.shtml)。重定向(Redirect)是通過各種方法將各種網(wǎng)絡(luò)請求重新定個方向轉(zhuǎn)到其它位置。這種情況下,如果不做重定向,則用戶收藏夾或搜索引擎數(shù)據(jù)庫中舊地址只能讓訪問客戶得到一個404頁面錯誤信息;再者某些注冊了多個域名的網(wǎng)站,也需要通過重定向讓訪問這些域名的用戶自動跳轉(zhuǎn)到主站點(diǎn)等。重定向表示的是響應(yīng)碼301和響應(yīng)碼302,比如,在訪問百度時(shí),輸入網(wǎng)址,,http是不安全的,https足夠安全,服務(wù)器返回一個301(永久重定向的狀態(tài)碼),表示百度服務(wù)器會將瀏覽器永久重定向到""中,以后訪問瀏覽器會直接訪問新地址。而302是臨時(shí)重定向,也就是臨時(shí)轉(zhuǎn)移地址,下一次訪問請求還會訪問這個地址。在request函數(shù)中,redirect參數(shù)用于打開或關(guān)閉重定向開關(guān)。案例——發(fā)送重定向請求通過打開或關(guān)閉重定向開關(guān)參數(shù),輸出重試次數(shù)。對于重定向,重試次數(shù)不計(jì)數(shù)。項(xiàng)目實(shí)戰(zhàn)使用爬蟲訪問淘寶,發(fā)送請求后不可能無期限的等待響應(yīng),超過以timeou
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)一年級20以內(nèi)口算練習(xí)題
- 水電安裝合同范本6篇
- 小學(xué)數(shù)學(xué)一年級下冊20以內(nèi)口算達(dá)標(biāo)練習(xí)
- 小學(xué)數(shù)學(xué)小數(shù)乘除法計(jì)算題綜合訓(xùn)練蘇教版五年級
- 公司商業(yè)工作計(jì)劃書6篇
- 《戰(zhàn)略思考選對方向》課件
- 公路工程施工總結(jié)報(bào)告標(biāo)準(zhǔn)
- 高考新課標(biāo)語文模擬試卷系列之68
- 《求真務(wù)實(shí)開拓創(chuàng)新》課件
- 《康師傅促銷評估》課件
- 2025年國務(wù)院發(fā)展研究中心信息中心招聘應(yīng)屆畢業(yè)生1人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年公安機(jī)關(guān)理論考試題庫500道及參考答案
- 《古蘭》中文譯文版
- 理想系列一體化速印機(jī)故障代碼
- 現(xiàn)代電路技術(shù)——故障檢測D算法
- 檢驗(yàn)科各專業(yè)組上崗輪崗培訓(xùn)考核制度全6頁
- 鈑金與成型 其它典型成形
- 工程停止點(diǎn)檢查管理(共17頁)
- 爬架安裝檢查驗(yàn)收記錄表1529
- 2021年全國煙草工作會議上的報(bào)告
- 電氣工程課程設(shè)計(jì)——車間動力及照明設(shè)計(jì)
評論
0/150
提交評論