歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋果6袋
6
麥子學(xué)院

Python爬蟲的原理是什么?

發(fā)布時間:2018-04-10 17:48  回復(fù):0  查看:2950   最后回復(fù):2018-04-10 17:48  

本文和大家分享的主要是python爬蟲的基本原理相關(guān)內(nèi)容,希望對初學(xué)python爬蟲的童鞋有所幫助,一起來看看吧。

  1. 什么是爬蟲

  請求網(wǎng)站并 提取 數(shù)據(jù)的 自動化 程序。

  2. 爬蟲基本流程

 ?。?/span>發(fā)起請求

  通過HTTP庫向目標(biāo)站點(diǎn)發(fā)起請求,即發(fā)送一個Request,請求可以包含額外的headers等信息,等待服務(wù)器響應(yīng)。

  .獲取響應(yīng)

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

 ?。?/span>解析內(nèi)容

  得到的內(nèi)容可能是HTML,可以用正則表達(dá)式、網(wǎng)頁解析庫進(jìn)行解析??赡苁?/span>Json,可以直接轉(zhuǎn)為Json對象解析,可能是二進(jìn)制數(shù)據(jù),可以做保存或者進(jìn)一步處理。

 ?。?/span>保存數(shù)據(jù)

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

  3. 什么是RequestResponse

Python爬蟲的原理是什么?

 4. Request中包含什么

  . 請求方式

  主要有GET、POST兩種類型,另外還有HEAD、PUT、DELETE、OPTIONS等。

  1. GET:請求的參數(shù)全都包含在請求的網(wǎng)址中。直接輸入鏈接即可訪問。

  2. POST:與GET不同,請求的信息封裝了,包含在Formdata中。需要構(gòu)造表單,然后點(diǎn)擊提交。

 ?。?nbsp;請求URl

  URL全稱統(tǒng)一資源定位符,入一個網(wǎng)頁文檔、一張圖片、一個視頻等都可以用URL唯一來確定。

  . 請求頭Headers

  包含請求時的頭部文件,包含了很重要配置信息,如User_Agent、Host、Cookies等信息。

 ?。?nbsp;請求體

  請求時額外攜帶的數(shù)據(jù),如表單提交時的表單數(shù)據(jù)。一般GET請求無需請求體,POST請求則需要請求體。

  5. Response中包含什么

 ?。?nbsp;響應(yīng)狀態(tài) status_code

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

  . 響應(yīng)頭 headers

  如內(nèi)容類型、內(nèi)容長度、服務(wù)器信息、設(shè)置Cookie等等。鍵值對的形式。

  . 響應(yīng)體

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

  6. 能抓怎樣的數(shù)據(jù)

 ?。?nbsp;網(wǎng)頁文本

  如HTML文檔、Json格式文本等。

 ?。?nbsp;圖片

  獲取到的是二進(jìn)制文件、保存為圖片格式。

  python //example 保存了一個圖片 import requests response = requests.get('https://www.baidu.com/img/baidu_jgylogo3.gif') print(response.content) with open('C:/Users/Administrator/Desktop/1.gif', 'wb') as f: f.write(response.content)

  . 視頻

  同為二進(jìn)制文件,保存為視頻格式即可。

 ?。?nbsp;其它

  7. 怎樣進(jìn)行網(wǎng)頁的解析

 ?。?nbsp;解析方式

  1. 直接處理

  2. Json解析(Ajax

  3. 正則表達(dá)式

  4. BeautifulSoap

  5. PyQuery

  6. XPath

 ?。?nbsp;為什么抓到的和瀏覽器看到的不一樣

  因為抓到的結(jié)果里面有很多js文件,里面包含的網(wǎng)頁中內(nèi)容的請求。瀏覽器則是把所有js加載完畢后才顯示出來的。

  8. 怎樣解決JavaScript渲染的問題

  . 分析Ajax請求

 ?。?Selenium/WebDriver (模擬渲染)

 ?。?Splash(同上)

 ?。?PyV8、Ghost.py

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

 ?。?nbsp;文本

  純文本、Json、Xml

 ?。?nbsp;關(guān)系型數(shù)據(jù)庫

  如MySQLOracle、SQL Server等具有結(jié)構(gòu)化表結(jié)構(gòu)形式存儲。

 ?。?nbsp;非關(guān)系型數(shù)據(jù)庫

  如MongoDB、RedisKey_Value形式存儲。

 ?。?nbsp;二進(jìn)制文件

  如圖片、視頻、音頻等等直接保存成 特定格式 即可。

 

您還未登錄,請先登錄

熱門帖子

最新帖子

?