爬蟲基本原理 1. 什麼是爬蟲 請求 網站並 提取 數據的 自動化 程式。 2. 爬蟲基本流程 發起請求 通過HTTP庫向目標站點發起請求,即發送一個Request,請求可以包含額外的headers等信息,等待伺服器響應。 獲取響應 如果伺服器能正常響應,會得到一個Response,Response ...
爬蟲基本原理
1. 什麼是爬蟲
請求網站並提取數據的自動化程式。
2. 爬蟲基本流程
發起請求
通過HTTP庫向目標站點發起請求,即發送一個Request,請求可以包含額外的headers等信息,等待伺服器響應。
獲取響應
如果伺服器能正常響應,會得到一個Response,Response的內容便是所要獲取的頁面內容,類型可能有HTML,Json字元串,二進位數據(如圖片視頻)等類型。
解析內容
得到的內容可能是HTML,可以用正則表達式、網頁解析庫進行解析。可能是Json,可以直接轉為Json對象解析,可能是二進位數據,可以做保存或者進一步處理。
保存數據
保存形式多樣,可以存為文本,也可以保存至資料庫,或者保存特定格式的文件。
3. 什麼是Request和Response
4. Request中包含什麼
- 請求方式
主要有GET、POST兩種類型,另外還有HEAD、PUT、DELETE、OPTIONS等。
- GET:請求的參數全都包含在請求的網址中。直接輸入鏈接即可訪問。
- POST:與GET不同,請求的信息封裝了,包含在Formdata中。需要構造表單,然後點擊提交。
- 請求URl
URL全稱統一資源定位符,入一個網頁文檔、一張圖片、一個視頻等都可以用URL唯一來確定。
- 請求頭Headers
包含請求時的頭部文件,包含了很重要配置信息,如User_Agent、Host、Cookies等信息。
- 請求體
請求時額外攜帶的數據,如表單提交時的表單數據。一般GET請求無需請求體,POST請求則需要請求體。
5. Response中包含什麼
- 響應狀態
status_code
有多種響應狀態,如200代表成功、301跳轉、404找不到頁面、502伺服器錯誤。
- 響應頭
headers
如內容類型、內容長度、伺服器信息、設置Cookie等等。鍵值對的形式。
- 響應體
最主要的部分,包含了請求資源的內容,如網頁HTML,圖片二進位數據等。
6. 能抓怎樣的數據
- 網頁文本
如HTML文檔、Json格式文本等。
- 圖片
獲取到的是二進位文件、保存為圖片格式。
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)
- 視頻
同為二進位文件,保存為視頻格式即可。
- 其它
7. 怎樣進行網頁的解析
- 解析方式
- 直接處理
- Json解析(Ajax)
- 正則表達式
- BeautifulSoap
- PyQuery
- XPath
- 為什麼抓到的和瀏覽器看到的不一樣
因為抓到的結果裡面有很多js文件,裡面包含的網頁中內容的請求。瀏覽器則是把所有js載入完畢後才顯示出來的。
8. 怎樣解決JavaScript渲染的問題
- 分析Ajax請求
- Selenium/WebDriver (模擬渲染)
- Splash(同上)
- PyV8、Ghost.py
9. 怎樣保存數據
- 文本
純文本、Json、Xml等
- 關係型資料庫
如MySQL、Oracle、SQL Server等具有結構化表結構形式存儲。
- 非關係型資料庫
如MongoDB、Redis等Key_Value形式存儲。
- 二進位文件
如圖片、視頻、音頻等等直接保存成特定格式即可。