久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

python爬蟲從入門到放棄(二)之爬蟲的原理

 文炳春秋 2020-09-08

在上文中我們說了:爬蟲就是請求網(wǎng)站并提取數(shù)據(jù)的自動化程序,。其中請求,,提取,自動化是爬蟲的關(guān)鍵,!下面我們分析爬蟲的基本流程

爬蟲的基本流程

發(fā)起請求
通過HTTP庫向目標站點發(fā)起請求,,也就是發(fā)送一個Request,請求可以包含額外的header等信息,,等待服務(wù)器響應(yīng)

獲取響應(yīng)內(nèi)容
如果服務(wù)器能正常響應(yīng),,會得到一個Response,Response的內(nèi)容便是所要獲取的頁面內(nèi)容,,類型可能是HTML,Json字符串,,二進制數(shù)據(jù)(圖片或者視頻)等類型

解析內(nèi)容
得到的內(nèi)容可能是HTML,可以用正則表達式,頁面解析庫進行解析,,可能是Json,可以直接轉(zhuǎn)換為Json對象解析,,可能是二進制數(shù)據(jù),可以做保存或者進一步的處理

保存數(shù)據(jù)
保存形式多樣,,可以存為文本,,也可以保存到數(shù)據(jù)庫,或者保存特定格式的文件

什么是Request,Response

瀏覽器發(fā)送消息給網(wǎng)址所在的服務(wù)器,,這個過程就叫做HTPP Request

服務(wù)器收到瀏覽器發(fā)送的消息后,,能夠根據(jù)瀏覽器發(fā)送消息的內(nèi)容,做相應(yīng)的處理,,然后把消息回傳給瀏覽器,,這個過程就是HTTP Response

瀏覽器收到服務(wù)器的Response信息后,會對信息進行相應(yīng)的處理,,然后展示

Request中包含什么,?

請求方式

主要有:GET/POST兩種類型常用,,另外還有HEAD/PUT/DELETE/OPTIONS
GET和POST的區(qū)別就是:請求的數(shù)據(jù)GET是在url中,,POST則是存放在頭部

GET:向指定的資源發(fā)出“顯示”請求。使用GET方法應(yīng)該只用在讀取數(shù)據(jù),,而不應(yīng)當被用于產(chǎn)生“副作用”的操作中,,例如在Web Application中,。其中一個原因是GET可能會被網(wǎng)絡(luò)蜘蛛等隨意訪問

POST:向指定資源提交數(shù)據(jù),請求服務(wù)器進行處理(例如提交表單或者上傳文件),。數(shù)據(jù)被包含在請求本文中,。這個請求可能會創(chuàng)建新的資源或修改現(xiàn)有資源,或二者皆有,。

HEAD:與GET方法一樣,,都是向服務(wù)器發(fā)出指定資源的請求。只不過服務(wù)器將不傳回資源的本文部分,。它的好處在于,,使用這個方法可以在不必傳輸全部內(nèi)容的情況下,就可以獲取其中“關(guān)于該資源的信息”(元信息或稱元數(shù)據(jù)),。

PUT:向指定資源位置上傳其最新內(nèi)容,。

OPTIONS:這個方法可使服務(wù)器傳回該資源所支持的所有HTTP請求方法。用'*'來代替資源名稱,,向Web服務(wù)器發(fā)送OPTIONS請求,,可以測試服務(wù)器功能是否正常運作。

DELETE:請求服務(wù)器刪除Request-URI所標識的資源,。

請求URL

URL,,即統(tǒng)一資源定位符,也就是我們說的網(wǎng)址,,統(tǒng)一資源定位符是對可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問方法的一種簡潔的表示,,是互聯(lián)網(wǎng)上標準資源的地址?;ヂ?lián)網(wǎng)上的每個文件都有一個唯一的URL,,它包含的信息指出文件的位置以及瀏覽器應(yīng)該怎么處理它。

URL的格式由三個部分組成:
第一部分是協(xié)議(或稱為服務(wù)方式),。
第二部分是存有該資源的主機IP地址(有時也包括端口號),。
第三部分是主機資源的具體地址,如目錄和文件名等,。

爬蟲爬取數(shù)據(jù)時必須要有一個目標的URL才可以獲取數(shù)據(jù),,因此,它是爬蟲獲取數(shù)據(jù)的基本依據(jù),。

請求頭

包含請求時的頭部信息,,如User-Agent,Host,Cookies等信息,下圖是請求請求百度時,,所有的請求頭部信息參數(shù)

請求體
請求是攜帶的數(shù)據(jù),,如提交表單數(shù)據(jù)時候的表單數(shù)據(jù)(POST)

Response中包含了什么

所有HTTP響應(yīng)的第一行都是狀態(tài)行,依次是當前HTTP版本號,,3位數(shù)字組成的狀態(tài)代碼,,以及描述狀態(tài)的短語,,彼此由空格分隔。

響應(yīng)狀態(tài)

有多種響應(yīng)狀態(tài),,如:200代表成功,,301跳轉(zhuǎn),404找不到頁面,,502服務(wù)器錯誤

  • 1xx消息——請求已被服務(wù)器接收,,繼續(xù)處理

  • 2xx成功——請求已成功被服務(wù)器接收、理解,、并接受

  • 3xx重定向——需要后續(xù)操作才能完成這一請求

  • 4xx請求錯誤——請求含有詞法錯誤或者無法被執(zhí)行

  • 5xx服務(wù)器錯誤——服務(wù)器在處理某個正確請求時發(fā)生錯誤 常見代碼: 200 OK 請求成功 400 Bad Request 客戶端請求有語法錯誤,,不能被服務(wù)器所理解 401 Unauthorized 請求未經(jīng)授權(quán),這個狀態(tài)代碼必須和WWW-Authenticate報頭域一起使用 403 Forbidden 服務(wù)器收到請求,,但是拒絕提供服務(wù) 404 Not Found 請求資源不存在,,eg:輸入了錯誤的URL 500 Internal Server Error 服務(wù)器發(fā)生不可預(yù)期的錯誤 503 Server Unavailable 服務(wù)器當前不能處理客戶端的請求,一段時間后可能恢復(fù)正常 301 目標永久性轉(zhuǎn)移 302 目標暫時性轉(zhuǎn)移

響應(yīng)頭

如內(nèi)容類型,,類型的長度,,服務(wù)器信息,設(shè)置Cookie,如下圖

響應(yīng)體

最主要的部分,,包含請求資源的內(nèi)容,,如網(wǎng)頁HTMl,圖片,二進制數(shù)據(jù)等

能爬取什么樣的數(shù)據(jù)

網(wǎng)頁文本:如HTML文檔,,Json格式化文本等
圖片:獲取到的是二進制文件,,保存為圖片格式
視頻:同樣是二進制文件
其他:只要請求到的,都可以獲取

如何解析數(shù)據(jù)

  1. 直接處理

  2. Json解析

  3. 正則表達式處理

  4. BeautifulSoup解析處理

  5. PyQuery解析處理

  6. XPath解析處理

關(guān)于抓取的頁面數(shù)據(jù)和瀏覽器里看到的不一樣的問題

出現(xiàn)這種情況是因為,,很多網(wǎng)站中的數(shù)據(jù)都是通過js,,ajax動態(tài)加載的,所以直接通過get請求獲取的頁面和瀏覽器顯示的不同,。

如何解決js渲染的問題,?

分析ajax
Selenium/webdriver
Splash
PyV8,Ghost.py

怎樣保存數(shù)據(jù)

文本:純文本,Json,Xml等

關(guān)系型數(shù)據(jù)庫:如mysql,oracle,sql server等結(jié)構(gòu)化數(shù)據(jù)庫

非關(guān)系型數(shù)據(jù)庫:MongoDB,Redis等key-value形式存儲

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多