最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js?實現簡單爬蟲的示例代碼

 更新時間:2025年02月24日 08:31:06   作者:憶宸_1  
本文主要介紹了Node.js?實現簡單爬蟲,爬取美食網站的菜品標題和圖片鏈接,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

介紹

爬蟲是一種按照一定的規(guī)則,自動地抓取萬維網信息的程序或者腳本。
本文將使用 Nodejs 編寫一個簡單的爬蟲腳本,爬取一個美食網站,獲取菜品的標題和圖片鏈接,并以表格的形式輸出。

準備工作

1、初始化項目

首先,確保已安裝 Node,然后創(chuàng)建一個新的文件目錄,運行以下命令初始化 Node.js 項目

npm init -y

2、安裝依賴

使用 axios 庫來進行 HTTP 請求
使用 cheerio 庫來解析 HTML 內容
使用 node-xlsx 庫來將數據寫入 Excel 文件

npm install axios cheerio node-xlsx --save

代碼實現

1、創(chuàng)建爬蟲腳本

在項目根目錄下創(chuàng)建一個 crawler.js 文件,并寫入以下代碼

import axios from "axios";
import cheerio from "cheerio";

// 目標網頁的URL,這里使用 下廚房 這個美食網站作為測試
const targetUrl = "https://www.xiachufang.com/category/40076/";

// 請求目標網頁,獲取HTML內容
const getHtml = async () => {
  const response = await axios.get(targetUrl);

  if (response.status !== 200) {
    throw new Error("請求失敗");
  }
  return response.data;
};

// 解析HTML內容,獲取菜品的標題和圖片鏈接
const getData = async (html) => {
  const $ = cheerio.load(html);
  const list = [];
  $(".normal-recipe-list li").each((i, elem) => {
    const imgUrl = $(elem).find("img").attr("src");
    const title = $(elem).find("p.name a").text();
    list.push({
      title: title.replace(/[\n\s]+/g, ""),
      imgUrl,
    });
  });
  return list;
};

2、以 Excel 表格形式保存數據

import xlsx from "node-xlsx";
import fs from "fs";

// 根據 表頭數據 和 列表數據 轉換成二維數組
const transData = (columns, tableList) => {
  const data = columns.reduce(
    (acc, cur) => {
      acc.titles.push(cur.header);
      acc.keys.push(cur.key);
      return acc;
    },
    { titles: [], keys: [] }
  );

  const tableBody = tableList.map((item) => {
    return data.keys.map((key) => item[key]);
  });
  return [data.titles, ...tableBody];
};

const writeExcel = (list) => {
  // 表頭
  const columns = [
    { header: "菜名", key: "title" },
    { header: "圖片鏈接", key: "imgUrl" },
  ];

  // 構建表格數據
  const tableData = transData(columns, list);
  const workbook = xlsx.build([
    {
      name: "菜譜",
      data: tableData,
    },
  ]);

  // 寫入文件
  fs.writeFileSync("./菜譜.xlsx", workbook, "binary");
};

3、執(zhí)行

(async () => {
  const html = await getHtml();
  const list = await getData(html);
  await writeExcel(list);
  console.log("執(zhí)行完畢");
})();

運行爬蟲

在終端中運行以下命令來執(zhí)行爬蟲代碼

node crawler.js

效果圖

總結

通過學習這個簡單的示例,您可以進一步探索更復雜的爬蟲應用,處理更多類型的網頁和數據,并加入更多功能來實現您自己的爬蟲項目。

到此這篇關于Node.js 實現簡單爬蟲的示例代碼的文章就介紹到這了,更多相關Node.js 爬蟲內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • nodejs管理工具nvm安裝過程詳解

    nodejs管理工具nvm安裝過程詳解

    Node版本管理器--nvm,可以運行在多種操作系統上。nvm for windows 是使用go語言編寫的軟件。 我電腦使用的是Windows操作系統,所以我要記錄下在此操作系統上nvm的安裝和使用
    2021-06-06
  • Node.js制作簡單聊天室

    Node.js制作簡單聊天室

    這篇文章主要為大家詳細介紹了Node.js制作簡單聊天室的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 淺談Node.js 沙箱環(huán)境

    淺談Node.js 沙箱環(huán)境

    本篇文章主要介紹了Node.js 沙箱環(huán)境 ,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 如何在 Node.js 中使用 axios 配置代理并實現圖片并發(fā)下載

    如何在 Node.js 中使用 axios 配置代理并實現圖片并發(fā)下載

    這篇文章主要介紹了如何在Node.js中使用axios配置代理并實現圖片并發(fā)下載,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • Node.js連接postgreSQL并進行數據操作

    Node.js連接postgreSQL并進行數據操作

    自從MySQL被Oracle收購以后,PostgreSQL逐漸成為開源關系型數據庫的首選。這篇文章就給大家介紹了關于Node.js如何連接postgreSQL數據庫,并進行數據操作的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • Windows系統下Node.js安裝以及環(huán)境配置的完美教程

    Windows系統下Node.js安裝以及環(huán)境配置的完美教程

    相信對于很多關注javascript發(fā)展的同學來說,nodejs已經不是一個陌生的詞眼,下面這篇文章主要給大家介紹了關于Windows系統下Node.js安裝以及環(huán)境配置的完美教程,需要的朋友可以參考下
    2022-06-06
  • 學習Node.js模塊機制

    學習Node.js模塊機制

    這篇文章主要為大家詳細介紹了Node.js模塊機制,一篇關于Node.js模塊機制的學習筆記,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 解決Node.js使用MySQL出現connect ECONNREFUSED 127.0.0.1:3306的問題

    解決Node.js使用MySQL出現connect ECONNREFUSED 127.0.0.1:3306的問題

    這篇文章主要介紹了解決Node.js使用MySQL出現connect ECONNREFUSED 127.0.0.1:3306報錯的相關資料,文中將問題描述的很清楚,解決的方法也介紹的很完整,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • NodeJS學習筆記之(Url,QueryString,Path)模塊

    NodeJS學習筆記之(Url,QueryString,Path)模塊

    今天我們來看一下在nodejs中路徑的相關操作方法。在我們開發(fā)過程中路徑主要有:URL路徑,在瀏覽器中進行使用,當然這個也包含查詢字符串QueryString的相關操作;而另一種是磁盤路徑,主要用于文件等等進行操作,我們稱為Path,所以我將它們放在一起進行總結學習。
    2015-01-01
  • 深入理解NodeJS 多進程和集群

    深入理解NodeJS 多進程和集群

    這篇文章主要介紹了深入理解NodeJS 多進程和集群,詳細的介紹了什么是進程和進程的實現等,非常具有實用價值,需要的朋友可以參考下
    2018-10-10

最新評論

依兰县| 龙海市| 高阳县| 旬阳县| 阳春市| 永仁县| 应用必备| 江山市| 阜宁县| 双辽市| 黄浦区| 承德市| 泾川县| 荣昌县| 三门县| 夏邑县| 襄垣县| 澄江县| 文水县| 金沙县| 夹江县| 黑山县| 湟源县| 枞阳县| 玛多县| 安庆市| 岐山县| 竹山县| 大埔区| 盐源县| 徐汇区| 会东县| 新巴尔虎右旗| 彰武县| 东莞市| 故城县| 威远县| 景谷| 湖口县| 乳源| 洞头县|