- 發起請求:HTTP庫向目標站點發起請求(Request),Request中最好還包含一些配置信息,等待服務器響應。
- 獲取相應內容:若是服務器正常相應,會返回相應的頁面內容(Response);
- 解析內容:Response的類型有不少種,須要使用不一樣方法進行解析。
- 數據存儲:根據要求存儲爲相應的類型。
請求(Request)和響應(Response)
什麼是Request和Response
Request的類型
主要有GET和POST兩種,其他請求方法不經常使用,因此進行解釋java
- GET:方便
- 請求內容所有包含在網址中
- 能夠經過網址直接提交Request
- POST:安全
- 請求內容包含在隱藏在FormData中
- 構建FormData進行訪問
URL
URL:統一資源定位器,定位網頁中元素的下載位置。正則表達式
請求體
請求時額外提交的信息,如POST中的FormData。json
相應狀態(status_code)
有多種相應狀態:後端
- 200:成功
- 301:跳轉
- 404:找不到頁面
- 502:服務器錯誤
服務器對瀏覽器的一些設置要求。瀏覽器
響應體(text)
請求的資源內容安全
什麼樣的數據能夠被抓取
- 網頁文本:HTML或者Json格式文本
- 圖片:獲取二進制文件(content),保存問相應圖片。
- 視頻:方法同圖片。
- 其餘:能請求到的一切文件。
解析方式
- 直接處理:特別簡單的網頁(內容以字典形式存儲)。
- json解析:
- 正則表達式:提取HTML代碼中相應的文本。
- BeautifulSoup、pyQuery、Xpath等解析庫
怎樣解決Javascript渲染問題
- 分析Ajax請求。
- 使用Selenium、WebDriver模擬一個瀏覽器加載。
- 使用Splash
- pyV八、Gost.py模擬加載
存儲數據
- 文本:純文本、XML格斯、Json格式等。
- 關係型數據庫:結構化表單存儲
- 非關係型數據庫:key-value型存儲
- 二進制文件:視頻、圖片