python爬蟲學習-day003

爬蟲基本原理

  • 定義: 請求網站並提取數據的自動化程序
基本流程
  • 發起請求
    • 經過http庫向目標站點發起請求,即發送一個Request,請求能夠包含額外的headers等信息,等待服務器響應
  • 獲取響應內容
    • 若是服務器能正常響應,會獲得一個Response,Response的內容即是所要獲取的頁面內容,類型可能有HTML,json字符串,二進制(如圖片視頻)等類型。
  • 解析內容
    • 獲得的內容多是HTML,能夠用正則表達式,網頁解析庫進行解析,多是Json,多是二進制數據,能夠作保存或者進一步處理
  • 保存數據
    • 保存形式多樣,能夠存爲文本,也能夠保存至特定格式的文件。

Request與Response

  • Request
    • 瀏覽器就發送消息給該網址所在的服務器,這個過程叫HTTP Request
    • 請求方式
      • 主要有GET,POST兩種類型,HEAD,PUT,DELETE,OPTIONS等
    • 請求URL
      • URL全稱統一資源定位符,如一個網頁文檔,一張圖片,一個視頻等均可以用URL惟一來肯定
    • 請求頭
      • 包含請求時的頭部信息,如User-Agent,Host,Cookies等信息。
    • 請求體
      • 請求時額外攜帶的數據如表單提交時的表單數據
  • Response
    • 服務器收到瀏覽器發送的消息後,可以根據瀏覽器發送消息的內容,而後把消息回傳給瀏覽器。這個過程叫HTTP Response
    • 響應狀態
      • 有多種響應狀態,如200表明成功,301跳轉,404找不到頁面,502服務器錯誤
    • 響應頭
      • 如內容類型,內容長度,服務器信息,設置cookie等等
    • 響應體
      • 最主要的部分,包含了請求資源的內容,如HTML,圖片,二進制數據等。

抓取的數據

  • 網頁文本: 如HTML文檔,Json格式文本
  • 圖片:獲取的是二進制文件,保存爲圖片格式
  • 視頻:同爲二進制文件,保存視頻格式便可
  • 其餘:只要是能請求到的,都能獲取

解析方式

  • 直接解析
  • Json解析
  • 正則表達式
  • BeautifulSoup: 比正則更好用,更迅速,更快
  • PyQuery
  • XPath

抓到的數據和瀏覽器顯示不一致

請求到的頁面中包含了一些js腳本javascript

解決JavaScript渲染問題

  • 分析Ajax請求
  • Selenium/WebDriver
  • Splash 模擬javascript渲染 github開源
  • PyV8,Ghost.py

保存數據

  • 文本: 純文本,json,xml等
  • 關係型數據庫: 如mysql,oracle,SQL Server等具備結構化表格形式存儲
  • 非關係型數據庫:如Mongodb,Redis等key-value形式存儲
  • 二進制文件: 如圖片,視頻,音頻等直接保存稱特定格式便可
相關文章
相關標籤/搜索