《數(shù)據(jù)采集與預(yù)處理》課件4:靜態(tài)網(wǎng)頁爬取模塊-Requests庫_第1頁
《數(shù)據(jù)采集與預(yù)處理》課件4:靜態(tài)網(wǎng)頁爬取模塊-Requests庫_第2頁
《數(shù)據(jù)采集與預(yù)處理》課件4:靜態(tài)網(wǎng)頁爬取模塊-Requests庫_第3頁
《數(shù)據(jù)采集與預(yù)處理》課件4:靜態(tài)網(wǎng)頁爬取模塊-Requests庫_第4頁
《數(shù)據(jù)采集與預(yù)處理》課件4:靜態(tài)網(wǎng)頁爬取模塊-Requests庫_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Requests庫Requests庫常用的方法:get,post,13個控制參數(shù)(小組討論結(jié)果)Response對象常用屬性:復(fù)習(xí)理解Cookies和Session的概念熟練掌握Requests的會話對象的使用熟練掌握Requests的Post請求用法能夠使用開發(fā)者工具進(jìn)行請求分析教學(xué)目標(biāo)1Cookie與session靜態(tài)網(wǎng)頁數(shù)據(jù)采集--Requests庫Requests庫入門任務(wù)講解2

Requests庫模擬會話3Requests庫入門任務(wù)講解任務(wù)1:手機(jī)號碼查詢【任務(wù)描述】練習(xí)使用通用爬蟲框架獲取靜態(tài)網(wǎng)頁的文本內(nèi)容。使用Requests庫,獲取/手機(jī)歸屬地查詢結(jié)果,并打印輸出頁面的HTML文本內(nèi)容。【分析】

目標(biāo)頁面如下圖所示。輸入合法數(shù)據(jù),觀察頁面請求的規(guī)律。輸入任意合法手機(jī)號后點擊查詢,頁面跳轉(zhuǎn),發(fā)現(xiàn)瀏覽器地址欄發(fā)生變化。觀察得知,:8080/search.asp?mobileaction=mobile中mobile查詢參數(shù)后為查詢的手機(jī)號碼,是典型的Get請求。Requests庫入門任務(wù)講解任務(wù)2:QQ表情包下載【任務(wù)描述】使用Requests庫下載/zjbq/網(wǎng)站中任意表情包圖片?!痉治觥磕繕?biāo)頁面首先需要確定圖片的url地址,需要結(jié)合瀏覽器的開發(fā)者工具進(jìn)行分析。F12打開瀏覽器的開發(fā)者工具,點擊元素選取器

,移動鼠標(biāo)到網(wǎng)頁圖片,觀察頁面結(jié)構(gòu)。頁面中的表情包圖片是通過img標(biāo)簽控制顯示,src屬性值是圖片的真實url地址。src屬性以/開頭,代表是網(wǎng)站的根路徑,無法進(jìn)行直接訪問,需要將域名拼接到Src屬性前。如當(dāng)前選取圖片的src屬性為/tp/zjbq/202003091800097905.gif,完整的請求地址為/tp/zjbq/202003091800097905.gif??芍苯訌?fù)制地址到瀏覽器中進(jìn)行驗證。2Requests庫入門任務(wù)講解靜態(tài)網(wǎng)頁數(shù)據(jù)采集--Requests庫Cookie與Session1

Requests庫模擬會話31、Requests模擬登錄需要登錄之后才能進(jìn)行頁面爬取的情況,屬于深層次的網(wǎng)頁爬取。我們將講一些大家熟悉的例子,比如爬取獵聘網(wǎng)招聘信息、QQ郵箱郵件的內(nèi)容,這種網(wǎng)站對權(quán)限的管理非常嚴(yán)格,不同的角色權(quán)限,對應(yīng)的網(wǎng)頁內(nèi)容是不同的。模擬登錄由于涉及到用戶名和密碼等隱私數(shù)據(jù),一般網(wǎng)站的設(shè)計人員會使用Post方式向網(wǎng)站的后臺進(jìn)行數(shù)據(jù)提交,密碼也不是明碼傳輸,而是加密后傳輸。需要使用瀏覽器的開發(fā)者工具攔截網(wǎng)絡(luò)請求分析出登錄提交的URL地址。Cookie與Session1、Requests模擬登錄分析出登錄的URL地址后只是邁出了關(guān)鍵的一步,實際上現(xiàn)在的網(wǎng)站為了應(yīng)對爬蟲爬取,避免別有用心的人惡意登錄和注冊,大多數(shù)都會采用驗證碼技術(shù)?,F(xiàn)在普遍使用驗證碼的技術(shù)除了圖片驗證碼外,還有短信驗證碼、滑動拼圖、圖標(biāo)點選等多種方式。有些驗證碼可以通過機(jī)器學(xué)習(xí)等技術(shù)手段解決,有些只能依靠打碼平臺人工識別。網(wǎng)絡(luò)傳輸協(xié)議HTTP是一種無狀態(tài)的協(xié)議。使用用戶登錄來舉例,用戶登錄向Web服務(wù)端請求,驗證通過后跳轉(zhuǎn)到主頁,然后連接會斷開,不會一直持續(xù)連接。再次發(fā)送請求,HTTP協(xié)議無法知曉用戶已經(jīng)登錄過,無記憶功能。為了解決狀態(tài)保持的問題,在Web開發(fā)中常用Cookies和Session來實現(xiàn)狀態(tài)保持機(jī)制。Cookie與Session2、Cookies機(jī)制存儲cookie是瀏覽器提供的功能。cookie其實是存儲在瀏覽器中的純文本,瀏覽器的安裝目錄下會專門有一個cookie文件夾來存放各個域下設(shè)置的cookie。當(dāng)網(wǎng)頁要發(fā)http請求時,瀏覽器會先檢查是否有相應(yīng)的cookie,有則自動添加在request請求中header的cookie字段中。這些是瀏覽器自動幫我們做的,而且每一次http請求瀏覽器都會自動幫我們做。Cookie與Session2、Cookies機(jī)制存儲在cookie中的數(shù)據(jù),每次都會被瀏覽器自動放在http請求中,如果這些數(shù)據(jù)并不是每個請求都需要發(fā)給服務(wù)端的數(shù)據(jù),瀏覽器這設(shè)置自動處理無疑增加了網(wǎng)絡(luò)開銷;但如果這些數(shù)據(jù)是每個請求都需要發(fā)給服務(wù)端的數(shù)據(jù)(比如身份認(rèn)證信息),瀏覽器這設(shè)置自動處理就大大免去了重復(fù)添加操作。所以對于那設(shè)置“每次請求都要攜帶的信息(最典型的就是身份認(rèn)證信息)”就特別適合放在cookie中,其他類型的數(shù)據(jù)就不適合了。Cookie與Sessioncookie最典型的應(yīng)用是:(一):判斷用戶是否登陸過網(wǎng)站,以便下次登錄時能夠直接登錄。如果我們刪除cookie,則每次登錄必須從新填寫登錄的相關(guān)信息。

(二):另一個重要的應(yīng)用是“購物車”中類的處理和設(shè)計。用戶可能在一段時間內(nèi)在同一家網(wǎng)站的不同頁面選擇不同的商品,可以將這些信息都寫入cookie,在最后付款時從cookie中提取這些信息,當(dāng)然這里面有了安全和性能問題需要我們考慮了。2、Cookies機(jī)制可通過瀏覽器開發(fā)者工具,查看cookies。在瀏覽器中打開百度,F(xiàn)12打開開發(fā)者工具,選擇Application選項卡。在左側(cè)目錄樹中選擇Cookies,就可以查看網(wǎng)站使用的cookie。Cookie與Session3、Session機(jī)制Session機(jī)制是一種服務(wù)器端的機(jī)制,服務(wù)器使用一種類似于散列表的結(jié)構(gòu)(也可能就是使用散列表)來保存信息。當(dāng)程序需要為某個客戶端的請求創(chuàng)建一個Session時,服務(wù)器首先檢查這個客戶端的請求(cookie)里是否已包含了一個Session標(biāo)識(稱為SessionId)。如果已包含則說明以前已經(jīng)為此客戶端創(chuàng)建過Session,服務(wù)器就按照SessionId把這個session檢索出來使用(檢索不到,會新建一個);如果客戶端請求不包含SessionId,則為此客戶端創(chuàng)建一個Session并且生成一個與此Session相關(guān)聯(lián)的Sessionid,SessionId的值應(yīng)該是一個既不會重復(fù),又不容易被找到規(guī)律以仿造字符串,這個SessionId將被在本次響應(yīng)中返回給客戶端保存。Cookie與Session3、Session機(jī)制保存這個Sessionid的方式可以采用Cookie,這樣在交互過程中瀏覽器可以自動的按照規(guī)則把這個標(biāo)識發(fā)送給服務(wù)器。一般這個cookie的名字都是類似于SEEESIONID。但cookie可以被人為的禁止,則必須有其他機(jī)制以便在cookie被禁止時仍然能夠把sessionid傳遞回服務(wù)器。服務(wù)器也可以通過URL重寫的方式來傳遞SessionID的值,因此不是完全依賴Cookie。如果客戶端Cookie禁用,則服務(wù)器可以自動通過重寫URL的方式來保存Session的值,并且這個過程對程序員透明。Cookie與Session4、Session與Cookie區(qū)別和聯(lián)系cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上。cookie不是很安全,別人可以分析存放在本地的cookie并進(jìn)行cookie欺騙,考慮到安全應(yīng)當(dāng)使用session。session會在一定時間內(nèi)保存在服務(wù)器上。當(dāng)訪問增多,會比較占用你服務(wù)器的性能,考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用cookie。單個cookie保存的數(shù)據(jù)不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie??梢钥紤]將登陸信息等重要信息存放為session,其他信息如果需要保留,可以放在cookie中。Cookie與Session3Requests庫入門任務(wù)講解靜態(tài)網(wǎng)頁數(shù)據(jù)采集--Requests庫Requests庫模擬會話1

Cookie與Session2Requests庫支持HTTP連接保持和連接池,支持使用cookie保持會話,支持文件上傳,支持自動確定響應(yīng)內(nèi)容的編碼,支持國際化的URL和POST數(shù)據(jù)自動編碼等功能。保持登陸的cookie和session機(jī)制都用到了Cookies,爬蟲可以通過Cookies保持登陸狀態(tài)這個特性,以實現(xiàn)登錄爬取。再發(fā)起請求的時候,如果給爬蟲添加一個已經(jīng)登錄的Cookies,就可以通過Cookies直接登錄網(wǎng)站,從而訪問網(wǎng)站的深層頁面。Requests庫模擬會話Requests會話對象能夠跨請求保持某些參數(shù)如Cookies,即同一個Session實例發(fā)出的所有請求都保持在同一個Cookies,而Requests模塊每次會自動處理Cookies,這樣就可以很方便地處理登錄時保存的Cookies問題。因此,如果想要在爬蟲代碼中保持登錄狀態(tài),可以使用Requests會話對象。如果使用會話對象發(fā)起請求,底層的TCP連接將會被重用,也帶來顯著的性能提升。Requests庫模擬會話Requests庫模擬會話

方法一:利用cookie直接登錄可以看到Session會話對象在兩次請求之間保持了第一次訪問所設(shè)置的Cookies。Requests庫模擬會話方法二:利用session方法登錄網(wǎng)站Requests庫模擬會話Session會話對象也可以用來為請求方法提供缺省數(shù)據(jù)。通過為會話對象的屬性提供數(shù)據(jù)來實現(xiàn)的。RequestsPost請求在Web開發(fā)中Get請求和Post請求有非常廣泛的應(yīng)用。Get請求適用于數(shù)據(jù)小不敏感的數(shù)據(jù)請求,將請求參數(shù)拼接在url地址后,以鍵/值的方式進(jìn)行傳遞,多個參數(shù)之間以&進(jìn)行連接。目標(biāo)地址和參數(shù)之間以?分隔。如在百度中輸入python,觀察瀏覽器的地址欄,/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=python。其中/s為請求地址,問號后的部分為請求參數(shù)。除了Get請求外,對于Form表單的數(shù)據(jù)、敏感數(shù)據(jù)更適用于Post請求。Url地址欄不會發(fā)生變化,可通過瀏覽器的開發(fā)者工具攔截請求。觀察Formdata的數(shù)據(jù)。以下通過百度登錄,熟悉攔截Post請求。Requests庫模擬會話RequestsPost請求在瀏覽器中輸入百度地址,然后找到導(dǎo)航欄,點擊“登錄”標(biāo)簽,輸入用戶名和密碼,如果沒有賬戶,可隨意輸入。輸入完密碼后,F(xiàn)12打開瀏覽器的開發(fā)者工具,切換到Network選項卡。然后在登錄頁面中點擊“登錄”按鈕,觀察Network中的請求。鼠標(biāo)點擊?Login,在Headers中滑動到底部,找到FormData,在其中可以找到用戶名User和加密后的密碼。Requests庫模擬會話RequestsPost請求Requests模塊同樣支持Post請求,requests.post(url,data=payload,**kwargs)為語法格式。Requests庫模擬會話Requests庫模擬會話任務(wù):登錄豆瓣網(wǎng)站【任務(wù)描述】使用個人賬號,登錄豆瓣網(wǎng)站,爬取登錄后的個人主頁信息。如無豆瓣網(wǎng)站賬號請先注冊。豆瓣網(wǎng)址/【分析】由于模擬登錄需要使用注冊后的用戶名和密碼,所以首先開始豆瓣賬號注冊。Requests庫模擬會話任務(wù):登錄豆瓣網(wǎng)站【分析】使用“短信登錄/注冊”功能,輸入手機(jī)號和驗證后完成注冊。豆瓣網(wǎng)站具有短信登錄和密碼登錄兩種模式,我們使用密碼登錄。點擊“密碼登錄”輸入注冊的手機(jī)號和密碼完成登錄。登錄完成后的首頁如下圖所示。在“Syu的賬號”下選擇“個人主頁”鏈接,觀察url地址,確定個人主頁的url地址為/people/214085530/。其中Syu為個人注冊用戶的昵稱。Url地址中參數(shù)/people后的數(shù)字是流水號,以實際地址為準(zhǔn)。Requests庫模擬會話任務(wù):登錄豆瓣網(wǎng)站【分析】點擊“Syu的賬號”下的“退出”鏈接。在瀏覽器地址欄輸入“個人主頁”的url地址/people/214085530/,發(fā)現(xiàn)自動跳轉(zhuǎn)到登錄頁面,代表“個人主頁”只有在登錄后才能查看。要想實現(xiàn)豆瓣網(wǎng)站的模擬登錄必須要明確驗證用戶名和密碼的服務(wù)端URL地址。服務(wù)端URL地址可通過瀏覽器開發(fā)者工具獲取。首先在瀏覽器的地址欄輸入豆瓣網(wǎng)址,在首頁中找到“密碼登錄”功能,輸入用戶名和密碼。用戶名和密碼隨意輸入,能夠阻止頁面跳轉(zhuǎn),便于分析。在點擊“登錄豆瓣”前,F(xiàn)12打開開發(fā)者工具,切換到Network,勾選“Preservelog”多選框。切換到豆瓣首頁,點擊“登錄豆瓣”按鈕。然后查看Network中攔截到的請求。Requests庫模擬會話任務(wù):登錄豆瓣網(wǎng)站【分析】Network中出現(xiàn)三個攔截到的請求。兩個stat.html開頭的請求,查看Headers都是get(RequestMethod:Get)請求,可能行不大。查看basic請求,請求方式為Post,其中RequestURL為登錄驗證的服務(wù)端地址/j/mobile/login/basic。滾動鼠標(biāo)到Headers底部,找到“

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論