爬蟲基本原理2
什麽是爬?
請求?網站並提取數據的?自動化程序
爬蟲的基本流程
發起請求
通過HTTP庫向?目標站點發起請求,即發送?個Request,請求可以包含額外的headers等信息,等待服務器響應。
獲取相應內容
如果服務器?能正常響應,會得到?一個Response,Response的內容便是所要獲取的?面內容,類型可能有HTML,Json字符串串,?二進制數據(如圖片視頻)等類型。
解析內容
得到的內容可能是HTML,可以?用正則表達式、?頁解析庫進行解析。可能是Json,可以直接轉為Json對象解析,可能是二進制數據,可以做保存或者進一步的處理。
保存數據
保存形式多樣,可以存為?文本,也可以保存至數據庫,或者保存特定格式的文件。
Request與Response
(1)瀏覽器就發送消息給該?網址所在的服務器,這個過程叫做HTTP Request。
(2)服務器收到瀏覽器發送的消息後,能夠根據瀏覽?發送消息的內容,做相應處理,然後把消息回傳給瀏覽?。這個過程叫做HTTP Response。
(3)瀏覽器收到服務器的Response信息後,會對信息進行相應處理,然後展示。
Request中包含什麽
請求方式
主要有GET、POST兩種類型,另外還有HEAD、PUT、DELETE、OPTIONS等。
請求URL
URL全稱統一資源定位符,如一個網頁文檔、一張圖片、一個視頻等都可以用URL唯一來確定。
請求頭
包含請求時的頭部信息,如User-Agent、Host、Cookies等信息。
請求體
請求時額外攜帶的數據,如表單提交時的表單數據
Response中包含什麽
響應狀態
有多種響應狀態,如200代表成功、301跳轉、404找不到頁面、502服務器錯誤
響應頭
如內容類型、內容長度、服務器信息、設置Cookie等等。
響應體
最主要的部分,包含了請求資源的內容,如網頁HTML、圖片二進制數據等。
能抓怎樣的數據
網頁文本:如HTML文檔、Json格式文本等。
圖片:獲取到的是二進制文件,保存為圖片格式。
視頻:同為二進制文件,保存為視頻格式即可。
其他:只要是能請求到的,都能獲取。
怎樣來解析
直接處理
Json解析
正則表達式
BeautifulSoup
XPath
PyQuery
怎樣保存數據
文本:純文本、Json、Xml等。
關系型數據庫:如MySQL、Oracle、SQL Server等具有結構化表結構形式存儲。
關系型數據庫:如MongoDB、Redis等Key-Value形式存儲。
二進制文件:如圖?片、視頻、音頻等直接保存成特定格式即可。
爬蟲基本原理2