python爬蟲入門request 常用庫介紹整理_第1頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、python爬蟲入門request 常用庫介紹整理網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在foaf社區(qū)中間,更常常的稱為網頁追趕者),是一種根據(jù)一定的規(guī)章,自動地抓取萬維網信息的程序或者腳本。另外一些不常用法的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。其實通俗的講就是通過程序去獵取web頁面上自己想要的數(shù)據(jù),也就是自動抓取數(shù)據(jù)。你可以爬去妹子的,爬取自己想看看的視頻。等等你想要爬取的數(shù)據(jù),只要你能通過掃瞄器拜訪的數(shù)據(jù)都可以通過爬蟲獵取模擬掃瞄器打開網頁,獵取網頁中我們想要的那部分數(shù)據(jù)掃瞄器打開網頁的過程:當你在掃瞄器中輸入地址后,經過dns服務器找到服務器主機,向服務器發(fā)送一個哀求,服務器經

2、過解析后發(fā)送給用戶掃瞄器結果,包括html,js,css等文件內容,掃瞄器解析出來最后展現(xiàn)給用戶在掃瞄器上看到的結果所以用戶看到的掃瞄器的結果就是由html代碼構成的,我們爬蟲就是為了獵取這些內容,通過分析和過濾html代碼,從中獵取我們想要資源(文本,視頻.)發(fā)起哀求通過http庫向目標站點發(fā)起哀求,也就是發(fā)送一個request,哀求可以包含額外的header等信息,等待服務器響應獵取響應內容假如服務器能正常響應,會得到一個response,response的內容便是所要獵取的頁面內容,類型可能是html,json字符串,二進制數(shù)據(jù)(或者視頻)等類型解析內容得到的內容可能是html,可以用正

3、則表達式,頁面解析庫舉行解析,可能是json,可以挺直轉換為json對象解析,可能是二進制數(shù)據(jù),可以做保存或者進一步的處理保存數(shù)據(jù)保存形式多樣,可以存為文本,也可以保存到數(shù)據(jù)庫,或者保存特定格式的文件掃瞄器發(fā)送消息給網址所在的服務器,這個過程就叫做htpp request服務器收到掃瞄器發(fā)送的消息后,能夠按照掃瞄器發(fā)送消息的內容,做相應的處理,然后把消息回傳給掃瞄器,這個過程就是http response掃瞄器收到服務器的response信息后,會對信息舉行相應的處理,然后展示哀求方式主要有:get/post兩種類型常用,另外還有head/put/delete/optionsget和post的

4、區(qū)分就是:哀求的數(shù)據(jù)get是在url中,post則是存放在頭部get:向指定的資源發(fā)出顯示哀求。用法get辦法應當只用在讀取數(shù)據(jù),而不應該被用于產生副作用的操作中,例如在web application中。其中一個緣由是get可能會被網絡蜘蛛等任意拜訪post:向指定資源提交數(shù)據(jù),哀求服務器舉行處理(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在哀求本文中。這個哀求可能會創(chuàng)建新的資源或修改現(xiàn)有資源,或二者皆有。head:與get辦法一樣,都是向服務器發(fā)出指定資源的哀求。只不過服務器將不傳回資源的本文部分。它的益處在于,用法這個辦法可以在不必傳輸所有內容的狀況下,就可以獵取其中關于該資源的信息(元信息或

5、稱元數(shù)據(jù))。put:向指定資源位置上傳其最新內容。options:這個辦法可使服務器傳回該資源所支持的全部http哀求辦法。用&39;*&39;來代替資源名稱,向web服務器發(fā)送options哀求,可以測試服務器功能是否正常運作。delete:哀求服務器刪除request-uri所標識的資源。哀求urlurl,即統(tǒng)一資源定位符,也就是我們說的網址,統(tǒng)一資源定位符是對可以從互聯(lián)網上得到的資源的位置和拜訪辦法的一種簡潔的表示,是互聯(lián)網上標準資源的地址?;ヂ?lián)網上的每個文件都有一個唯一的url,它包含的信息指出文件的位置以及掃瞄器應當怎么處理它。url的格式由三個部分組成:第一部分是協(xié)

6、議(或稱為服務方式)。其次部分是存有該資源的主機ip地址(有時也包括端口號)。第三部分是主機資源的詳細地址,如名目和文件名等。爬蟲爬取數(shù)據(jù)時必需要有一個目標的url才可以獵取數(shù)據(jù),因此,它是爬蟲獵取數(shù)據(jù)的基本依據(jù)。哀求頭包含哀求時的頭部信息,如user-agent,host,cookies等信息,下圖是哀求哀求百度時,全部的哀求頭部信息參數(shù)哀求體哀求是攜帶的數(shù)據(jù),如提交表單數(shù)據(jù)時候的表單數(shù)據(jù)(post)全部http響應的第一行都是狀態(tài)行,依次是當前http版本號,3位數(shù)字組成的狀態(tài)代碼,以及描述狀態(tài)的短語,彼此由空格分隔。響應狀態(tài)有多種響應狀態(tài),如:200代表勝利,301跳轉,404找不到頁面

7、,502服務器錯誤1xx消息——哀求已被服務器接收,繼續(xù)處理2xx勝利——哀求已勝利被服務器接收、理解、并接受3xx重定向——需要后續(xù)操作才干完成這一哀求4xx哀求錯誤——哀求含有詞法錯誤或者無法被執(zhí)行5xx服務器錯誤——服務器在處理某個正確哀求時發(fā)生錯誤 常見代碼: 200 ok 哀求勝利 400 bad request客戶端哀求有語法錯誤,不能被服務器所理解 401 unauthorized哀

8、求未經授權,這個狀態(tài)代碼必需和報頭域一起用法 403 forbidden 服務器收到哀求,但是否決提供服務404 not found 哀求資源不存在,eg:輸入了錯誤的url 500 internal server error服務器發(fā)生不行預期的錯誤 503 server unavailable 服務器當前不能處理客戶端的哀求,一段時光后可能復原正常 301目標永遠性轉移 302 目標臨時性轉移響應頭如內容類型,類型的長度,服務器信息,設置cookie,如下圖響應體最主要的部分,包含哀求資源的內容,如網頁html,,二進制數(shù)據(jù)等網頁文本:如html文檔,json格式化文本等:獵取到的是二進制文

9、件,保存為格式視頻:同樣是二進制文件其他:只要哀求到的,都可以獵取挺直處理json解析正則表達式處理beautifulsoup解析處理pyquery解析處理xpath解析處理浮現(xiàn)這種狀況是由于,無數(shù)網站中的數(shù)據(jù)都是通過js,ajax動態(tài)加載的,所以挺直通過get哀求獵取的頁面和掃瞄器顯示的不同。如何解決js渲染的問題?分析ajaxselenium/webdriversplashpyv8,ghost.py文本:純文本,json,xml等關系型數(shù)據(jù)庫:如mysql,oracle,sql server等結構化數(shù)據(jù)庫非關系型數(shù)據(jù)庫:mongodb,redis等key-value形式存儲requests

10、是用python語言基于urllib編寫的,采納的是apache2 licensed開源協(xié)議的http庫假如你看過上篇文章關于urllib庫的用法,你會發(fā)覺,其實urllib還是十分不便利的,而requests它會比urllib越發(fā)便利,可以節(jié)省我們大量的工作。(用了requests之后,你基本都不肯意用urllib了)一句話,requests是python實現(xiàn)的最容易易用的http庫,建議爬蟲用法requests庫。默認安裝好python之后,是沒有安裝requests模塊的,需要單獨通過pip安裝我們可以看出response用法起來的確十分便利,這里有個問題需要注重一下:無數(shù)狀況下的網站假

11、如挺直response.text會浮現(xiàn)亂碼的問題,所以這個用法response.content這樣返回的數(shù)據(jù)格式其實是二進制格式,然后通過decode()轉換為utf-8,這樣就解決了通過response.text挺直返回顯示亂碼的問題.哀求發(fā)出后,requests 會基于 http 頭部對響應的編碼作出有按照的推想。當你拜訪 response.text之時,requests 會用法其推想的文本編碼。你可以找出 requests 用法了什么編碼,并且能夠用法 response.encoding屬性來轉變它.如:不管是通過response.content.decode("utf

12、-8)的方式還是通過response.encoding="utf-8"的方式都可以避開亂碼的問題發(fā)生requests里提供個各種哀求方式哀求基本get哀求帶參數(shù)的get哀求,例子1假如我們想要在url查詢字符串傳遞數(shù)據(jù),通常我們會通過/get?key=val方式傳遞。requests模塊允許用法params關鍵字傳遞參數(shù),以一個字典來傳遞這些參數(shù),例子如下:上述兩種的結果是相同的,通過params參數(shù)傳遞一個字典內容,從而挺直構造url注重:其次種方式通過字典的方式的時候,假如字典中的參數(shù)為none則不會添加到url上解析json從結果

13、可以看出requests里面集成的json其實就是執(zhí)行了json.loads()辦法,兩者的結果是一樣的獵取二進制數(shù)據(jù)在上面提到了response.content,這樣獵取的數(shù)據(jù)是二進制數(shù)據(jù),同樣的這個辦法也可以用于下載以及視頻資源添加headers和前面我們將urllib模塊的時候一樣,我們同樣可以定制headers的信息,如當我們挺直通過requests哀求知乎網站的時候,默認是無法拜訪的這樣會得到如下的錯誤由于拜訪知乎需要頭部信息,這個時候我們在谷歌掃瞄器里輸入就可以看到用戶代理,將用戶代理添加到頭部信息這樣就可以正常的拜訪知乎了基本post哀求通過在發(fā)送post哀求時添加一個data參

14、數(shù),這個data參數(shù)可以通過字典構造成,這樣對于發(fā)送post哀求就十分便利同樣的在發(fā)送post哀求的時候也可以和發(fā)送get哀求一樣通過headers參數(shù)傳遞一個字典類型的數(shù)據(jù)響應我們可以通過response獲得無數(shù)屬性,例子如下結果如下:狀態(tài)碼推斷requests還附帶了一個內置的狀態(tài)碼查詢對象主要有如下內容:100: (&39;continue&39;,),101: (&39;switching_protocols&39;,),102: (&39;processing&39;,),103: (&39;checkpoint&39;

15、,),122: (&39;uri_too_long&39;, &39;request_uri_too_long&39;),200: (&39;ok&39;, &39;okay&39;, &39;all_ok&39;, &39;all_okay&39;, &39;all_good&39;, &39;o/&39;, &39;?&39;),201: (&39;created&39;,),202: (&39;accepted&3

16、9;,),203: (&39;non_authoritative_info&39;, &39;non_authoritative_information&39;),204: (&39;no_content&39;,),205: (&39;reset_content&39;, &39;reset&39;),206: (&39;partial_content&39;, &39;partial&39;),207: (&39;multi_status&39;, &39

17、;multiple_status&39;, &39;multi_stati&39;, &39;multiple_stati&39;),208: (&39;already_reported&39;,),226: (&39;im_used&39;,),redirection.300: (&39;multiple_choices&39;,),301: (&39;moved_permanently&39;, &39;moved&39;, &39;o-&39;),302

18、: (&39;found&39;,),303: (&39;see_other&39;, &39;other&39;),304: (&39;not_modified&39;,),305: (&39;use_proxy&39;,),306: (&39;switch_proxy&39;,),307: (&39;temporary_redirect&39;, &39;temporary_moved&39;, &39;temporary&39;),308: (&

19、amp;39;permanent_redirect&39;,&39;resume_incomplete&39;, &39;resume&39;,), these 2 to be removed in 3.0client error.400: (&39;bad_request&39;, &39;bad&39;),401: (&39;unauthorized&39;,),402: (&39;payment_required&39;, &39;payment&39;),403: (

20、&39;forbidden&39;,),404: (&39;not_found&39;, &39;-o-&39;),405: (&39;method_not_allowed&39;, &39;not_allowed&39;),406: (&39;not_acceptable&39;,),407: (&39;proxy_authentication_required&39;, &39;proxy_auth&39;, &39;proxy_authenticatio

21、n&39;),408: (&39;request_timeout&39;, &39;timeout&39;),409: (&39;conflict&39;,),410: (&39;gone&39;,),411: (&39;length_required&39;,),412: (&39;precondition_failed&39;, &39;precondition&39;),413: (&39;request_entity_too_large&39;,),4

22、14: (&39;request_uri_too_large&39;,),415: (&39;unsupported_media_type&39;, &39;unsupported_media&39;, &39;media_type&39;),416: (&39;requested_range_not_satisfiable&39;, &39;requested_range&39;, &39;range_not_satisfiable&39;),417: (&39;expec

23、tation_failed&39;,),418: (&39;im_a_teapot&39;, &39;teapot&39;, &39;i_am_a_teapot&39;),421: (&39;misdirected_request&39;,),422: (&39;unprocessable_entity&39;, &39;unprocessable&39;),423: (&39;locked&39;,),424: (&39;failed_dependency&

24、39;, &39;dependency&39;),425: (&39;unordered_collection&39;, &39;unordered&39;),426: (&39;upgrade_required&39;, &39;upgrade&39;),428: (&39;precondition_required&39;, &39;precondition&39;),429: (&39;too_many_requests&39;, &39;too_man

25、y&39;),431: (&39;header_fields_too_large&39;, &39;fields_too_large&39;),444: (&39;no_response&39;, &39;none&39;),449: (&39;retry_with&39;, &39;retry&39;),450: (&39;blocked_by_windows_parental_controls&39;, &39;parental_controls&39;),451: (&39;unavailable_for_legal_reasons&39;, &39;legal_reasons&39;),499: (&39;client_closed_request&39;,),server error.500: (&39;internal_server_error&39;, &39;server_error&39;,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論