python爬蟲的基本原理

python爬蟲的基本原理

什麼是爬蟲?

爬蟲就是用來請求網站並提取數據的自動化程序.

●爬蟲的基本流程:

1.發起請求:

通過HTTP庫向目標站點發起請求,即發送一個Request請求可以包含額外的headers等信息,等待服務器響應.

2.獲取響應內容:

如果服務器能正常響應,會得到一個Response,Response的內容便是所要獲取的頁面內容,類型可能有HTML,Json字符串,二進制數據(如圖片視頻)等類型.

3.解析內容:

得到的內容可能是HTML,可以用正則表達式,網頁解析庫進行解析.可能是Json,可以直接轉為Json對象解析.可能是二進制數據,可以做保存或者進一步的處理.

4.保存數據:

保存形式多樣,可以存為文本,也可以保存至數據庫,或者保存特定格式的文件.

什麼是Request和Response?

1.瀏覽器發送消息給網址所在的服務器,這個過程就叫做HTTP Request

2.服務器收到瀏覽器發送的消息後,能夠根據瀏覽器發送消息的內容,做相應處理,然後把消息回傳給瀏覽器.這個過程叫做HTTP Response.

3.瀏覽器收到服務器的Response信息後,會對信息進行相應處理,然後展示.

Request中包含什麼?

●請求方式:

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

●請求URL:

URL全稱同一資源定位符,如一個網頁文檔,一張圖片,一個視頻等都可以用URL唯一來確定

●請求頭Request Headers:

包含請求時的頭部信息,如User-Agent(用戶代理),Host,Cookies等信息

●請求體:

請求時額外攜帶的數據如表單提交時的表單數據

Response中包含什麼

●響應狀態:

有多種響應狀態,如200,代表成功,301跳轉,404找不到頁面,502服務器錯誤

●響應頭:

如內容類型,內容長度,服務器信息,設置cookie等等

●響應體:

最主要的部分,包含了請求資源的內容,如網頁HTML,圖片,二進制數據等.

python爬蟲的基本原理

也可以打印頭信息

print(response.headers)

print(response.status_code) 打印狀態碼

print(response.content) 二進制內容

print(response.content.decode()) 打印解碼後的網頁

抓取數據能抓怎樣的數據?

●網頁文本

如HTML文檔,Json格式文本等.

●圖片

獲取到的二進制文件,保存為圖片格式

●視頻

同為二進制文件,保存為視頻格式即可

●其他

只要能獲取到,都能抓取

解析方式:

1.直接解析

2.Json解析

3.正則表達式

4.BeautifulSoup

5.PyQuery

6.XPath

怎麼解決JavaScript渲染的問題?

●分析Ajax請求(返回的是一個json格式的字符串)

●Selenium/WebDriver

●Splash

●PyV8,Ghost.py

怎麼保存數據?

●文本

純文本,Json,Xml等

●關係型數據庫

如MySQL,Oracle,SQL Server等具有結構化表,結構形式存儲

●非關係型數據庫

如MongoDB,Redius等Key-Value形式存儲

●二進制文件

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

關注不迷路!每天進步一點點!


分享到:


相關文章: