(爬蟲學習筆記3)爬蟲的基本原理(基本思路)

一、爬蟲爬取網頁的基本思路

1、獲取網頁:

​ 通過 urllib、requests等庫完成 HTTP 的請求操作,得到響應之後我們只需要解析數據結構中的 Body 部分即可。

2、提取信息:

  • 正則表達式提取:

    ​ 通用方法,但是遇到正則表達式比較複雜的時候,提取的過程中容易出錯。

  • 運用 CSS 選擇器和 XPath 進行提取:

    ​ 運用如:Beautiful、soup、pyquery、lxml 等庫,我們可以快速提取網頁信息,如:節點屬性、文本值等。

3、保存數據:

  • 可以將提取出來的數據保存到 TXT 文本或者 JSON 文本中;
  • 也可以保存到數據庫中,例如:MySQL 和 MongoDB 等;
  • 。0或者保存到遠程服務器中,如:藉助 SFTP 進行操作;

4、自動化程序:

​ 將爬蟲程序自動化,使其可以自動爬取我們需要的信息,並能進行對各種異常的處理、錯誤重試的操作等,確保爬蟲能持續、高效的運行。

二、常見的爬取到數據

  • 最常見的常規網頁返回的就是 HTML 源代碼;
  • 有些網站返回的可能是一個JSON字符串(其中 API 接口大多采用這樣的形式),這類數據更容易抓取,而且更容易進行保存;
  • 我們還有可能會看到各種二進制數據,如:圖片、視頻和音頻等,我們可以將這類數據爬取下來,然後保存成對應的文件名;
  • 另外我們還能看到各種擴展名的文件,如:CSS、JavaScript 和配置文件等;

三、JavaScript 渲染頁面

​ 在抓取信息時,時常能看到抓取到的信息可能和實際在瀏覽器中看到的源碼不一樣。這是因爲現在的網頁越來越多的採用 Ajax、前端模塊化工具來構建,整個網頁可能都是由 JavaScript 渲染出來的,即原始的 HTML 代碼就是一個空殼,如:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>This is a Demo</title>
    </head>
    <body>
        <div id="container">
        </div>
    </body>
    <script src="app.js"></script>
</html>

body 節點中只有一個 id 爲 container 的節點,但是 body 節點後引入了 app.js ,它負責渲染整個網站。

渲染過程:

​ 瀏覽器打開這個網頁時:

  1. 先加載 HTML 內容,然後引入 app.js 文件並對這個文件進行請求;
  2. 獲得該文件之後,執行其中的 JavaScript 代碼;
  3. JavaScript 代碼則會改變 HTML 中的節點,向其中添加內容,

但是爬蟲用 urllib 或 requests 庫請求頁面是,只能得到 HTML 代碼,並不會繼續加載 JavaScript 文件,爬蟲也就得不到真正的源代碼。對於這樣的情況,我們可以分析後臺的 Ajax 接口,也可以使用 Selenium、Splash 這樣的庫來實現模擬 JavaScript 渲染。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章