站長資訊網
最全最豐富的資訊網站

聊聊使用Node.js + Cheerio 怎么進行數據抓取

要獲取數據,你必須求助于網絡抓取。本篇文章就來介紹一下如何使用Node和Cheerio抓取網站數據,希望對大家有所幫助!

聊聊使用Node.js + Cheerio 怎么進行數據抓取

在我們開始之前,你需要遵守當地的法紀法規,不可隨意抓取未經允許公開的數據。

先決條件

以下是本教程需要的一些東西:

  • 你需要安裝Node.js。如果你沒有 Node,只需確保從Node.js 下載頁面為你的系統下載它(https://nodejs.dev/download/)
  • 你需要在你的機器上安裝一個文本編輯器,比如VSCode或Atom
  • 你至少應該對 JavaScript、Node.js 和文檔對象模型 (DOM) 有基本的了解。

什么是 Cheerio?

Cheerio 是一個在 Node.js 中解析 HTML 和 XML 的工具,在 GitHub 上非常受歡迎,擁有超過23k 的 star 。

它快速、靈活且易于使用。由于它實現了 JQuery 的一個子集,如果你已經熟悉 JQuery,那么很容易開始使用 Cheerio。

Cheerio 和 Web 瀏覽器之間的主要區別在于,cheerio 不生成視覺渲染、加載 CSS、加載外部資源或執行 JavaScript。它只是解析標記并提供用于操作生成的數據結構的 API。這就解釋了為什么它也非??臁猚heerio 文檔。

如果你想使用cheerio 來抓取網頁,您需要首先使用axios或node-fetch等包來獲取標記。

如何使用 Cheerio 在 Node 中抓取網頁

在此示例中,我們將抓取此 Wikipedia 頁面上列出的所有國家和其他司法管轄區的ISO 3166-1 alpha-3 代碼。它位于ISO 3166-1 alpha-3頁面的當前代碼部分下。

這是國家/司法管轄區列表及其相應代碼的樣子:

聊聊使用Node.js + Cheerio 怎么進行數據抓取

第 1 步 – 創建工作目錄

在此步驟中,您將通過在終端上運行以下命令為您的項目創建一個目錄。該命令將創建一個名為learn-cheerio. 如果你愿意,你可以給它一個不同的名字。

mkdir learn-cheerio

learn-cheerio成功運行上述命令后,您應該能夠看到一個名為 created 的文件夾。

在下一步中,您將在您喜歡的文本編輯器中打開剛剛創建的目錄并初始化項目。

第 2 步 – 初始化項目

在此步驟中,您將導航到項目目錄并初始化項目。在您喜歡的文本編輯器中打開您在上一步中創建的目錄,并通過運行以下命令來初始化項目。

npm init -y

成功運行上述命令將package.json在項目目錄的根目錄下創建一個文件。

在下一步中,您將安裝項目依賴項。

第 3 步 – 安裝依賴項

在此步驟中,您將通過運行以下命令來安裝項目依賴項。這將需要幾分鐘,所以請耐心等待。

npm i axios cheerio pretty

成功運行上述命令將在字段package.json下的文件中注冊三個依賴項。dependencies第一個依賴是axios,第二個是cheerio,第三個是pretty。

axios是一個非常流行的http 客戶端,可以在 node 和瀏覽器中運行。我們需要它,因為cheerio 是一個標記解析器。

為了讓 Cheerio 解析標記并抓取您需要的數據,我們需要axios用于從網站獲取標記。如果您愿意,可以使用另一個 HTTP 客戶端來獲取標記。它不一定是axios.

pretty是用于美化標記的 npm 包,以便在終端上打印時可讀。

在下一部分中,您將檢查將從中抓取數據的標記。

第 4 步 – 檢查您要抓取的網頁

在從網頁中抓取數據之前,了解頁面的 HTML 結構非常重要。

在此步驟中,您將檢查要從中抓取數據的網頁的 HTML 結構。

導航到Wikipedia 上的ISO 3166-1 alpha-3 代碼頁面。在“當前代碼”部分下,有一個國家列表及其相應的代碼。CTRL + SHIFT + I您可以通過按chrome 上的組合鍵或右鍵單擊然后選擇“檢查”選項來打開 DevTools 。

這是我在 chrome DevTools 中的列表:

聊聊使用Node.js + Cheerio 怎么進行數據抓取

在下一節中,您將編寫用于抓取網頁的代碼。

第 5 步 – 編寫代碼以抓取數據

在本節中,你將編寫用于抓取我們感興趣的數據的代碼。首先運行以下將創建app.js文件的命令。

touch app.js

成功運行上述命令將app.js在項目目錄的根目錄下創建一個文件。

像任何其他 Node 包一樣,在開始使用它們之前,你必須首先require axios、cheerio和。你可以通過在剛剛創建pretty的文件頂部添加下面的代碼來做到這一點。app.js

const axios = require("axios"); const cheerio = require("cheerio"); const pretty = require("pretty");

在我們編寫用于抓取數據的代碼之前,我們需要學習cheerio. 我們將解析下面的標記并嘗試操作生成的數據結構。這將幫助我們學習 Cheerio 語法及其最常用的方法。

下面的標記是ul包含我們元素的li元素。

const markup = ` <ul class="fruits">   <li class="fruits__mango"> Mango </li>   <li class="fruits__apple"> Apple </li> </ul> `;

將上述變量聲明添加到app.js文件中

如何在 Cheerio 中加載標記

cheerio你可以使用該cheerio.load方法加載標記。該方法將標記作為參數。它還需要另外兩個可選參數。如果你有興趣,可以在文檔中閱讀有關它們的

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
精品国产日韩一区三区| 九九精品久久久久久噜噜| 伊人久久大香线蕉精品不卡| 精品国产线拍大陆久久尤物| 精品久久久久久蜜臂a∨| 久久青草精品38国产免费| 国内精品久久久久久久久蜜桃| 国产成人精品怡红院| 亚洲精品资源在线| 久久91精品国产一区二区| 国产乱码精品一区二区三区中文 | 2020无码专区人妻系列日韩| 精品久久久久亚洲| 老司机无码精品A| 国产精品综合AV一区二区国产馆| 精品综合久久久久久97| 99久久精品国产亚洲| 无码精品人妻一区二区三区漫画| 国内精品久久国产大陆| 亚洲无线观看国产精品| 日本道免费精品一区二区| 国内精品久久久久久麻豆| 久久成人国产精品一区二区| 精品久久久久久无码人妻热| 国产伦精品一区二区三区视频猫咪| 国产av无码专区亚洲国产精品| 日韩黄a级成人毛片| 亚洲精品日韩一区二区小说| 人妻在线日韩免费视频| 制服丝袜日韩中文字幕在线| 日韩美无码五月天| 中文字幕日韩理论在线| 日韩性公交车上xxhd| 日韩人妻精品无码一区二区三区 | 成人精品视频一区二区| 国内精品久久久久久久久齐齐| 日韩精品无码区免费专区 | 亚洲av日韩专区在线观看| 日韩无套内射视频6| 精品一区中文字幕| 九九九精品视频免费|