亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Node.js?實(shí)現(xiàn)簡(jiǎn)單爬蟲的示例代碼

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

介紹

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

準(zhǔn)備工作

1、初始化項(xiàng)目

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

npm init -y

2、安裝依賴

使用 axios 庫(kù)來(lái)進(jìn)行 HTTP 請(qǐng)求
使用 cheerio 庫(kù)來(lái)解析 HTML 內(nèi)容
使用 node-xlsx 庫(kù)來(lái)將數(shù)據(jù)寫入 Excel 文件

npm install axios cheerio node-xlsx --save

代碼實(shí)現(xiàn)

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

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

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

// 目標(biāo)網(wǎng)頁(yè)的URL,這里使用 下廚房 這個(gè)美食網(wǎng)站作為測(cè)試
const targetUrl = "https://www.xiachufang.com/category/40076/";

// 請(qǐng)求目標(biāo)網(wǎng)頁(yè),獲取HTML內(nèi)容
const getHtml = async () => {
  const response = await axios.get(targetUrl);

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

// 解析HTML內(nèi)容,獲取菜品的標(biāo)題和圖片鏈接
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 表格形式保存數(shù)據(jù)

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

// 根據(jù) 表頭數(shù)據(jù) 和 列表數(shù)據(jù) 轉(zhuǎn)換成二維數(shù)組
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" },
  ];

  // 構(gòu)建表格數(shù)據(jù)
  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í)行完畢");
})();

運(yùn)行爬蟲

在終端中運(yùn)行以下命令來(lái)執(zhí)行爬蟲代碼

node crawler.js

效果圖

總結(jié)

通過學(xué)習(xí)這個(gè)簡(jiǎn)單的示例,您可以進(jìn)一步探索更復(fù)雜的爬蟲應(yīng)用,處理更多類型的網(wǎng)頁(yè)和數(shù)據(jù),并加入更多功能來(lái)實(shí)現(xiàn)您自己的爬蟲項(xiàng)目。

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

相關(guān)文章

  • 30分鐘用Node.js構(gòu)建一個(gè)API服務(wù)器的步驟詳解

    30分鐘用Node.js構(gòu)建一個(gè)API服務(wù)器的步驟詳解

    這篇文章主要介紹了30分鐘用Node.js構(gòu)建一個(gè)API服務(wù)器的步驟詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2019-05-05
  • Node.js和MongoDB實(shí)現(xiàn)簡(jiǎn)單日志分析系統(tǒng)

    Node.js和MongoDB實(shí)現(xiàn)簡(jiǎn)單日志分析系統(tǒng)

    這篇文章主要介紹了Node.js和MongoDB實(shí)現(xiàn)簡(jiǎn)單日志分析系統(tǒng),本文給出了服務(wù)器端、客戶端、圖表生成、Shell自動(dòng)執(zhí)行等功能的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-04-04
  • Node.js?中使用fetch?按JSON格式發(fā)post請(qǐng)求的問題解析

    Node.js?中使用fetch?按JSON格式發(fā)post請(qǐng)求的問題解析

    最近在測(cè)試一個(gè)api,可以用curl命令直接訪問,指定header相關(guān)配置,request?body(JSON),成功后返回一個(gè)JSON,這篇文章主要介紹了Node.js?中使用fetch?按JSON格式發(fā)post請(qǐng)求,需要的朋友可以參考下
    2023-04-04
  • node.js express JWT token生成與校驗(yàn)的實(shí)現(xiàn)

    node.js express JWT token生成與校驗(yàn)的實(shí)現(xiàn)

    本文主要介紹了node.js express JWT token生成與校驗(yàn)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • node前端開發(fā)模板引擎Jade的入門

    node前端開發(fā)模板引擎Jade的入門

    這篇文章主要介紹了node前端開發(fā)模板引擎Jade的入門,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-05-05
  • NodeJS 文件夾拷貝以及刪除功能

    NodeJS 文件夾拷貝以及刪除功能

    這篇文章主要介紹了NodeJS 文件夾拷貝以及刪除功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 使用express搭建一個(gè)簡(jiǎn)單的查詢服務(wù)器的方法

    使用express搭建一個(gè)簡(jiǎn)單的查詢服務(wù)器的方法

    本篇文章主要介紹了使用express搭建一個(gè)簡(jiǎn)單的查詢服務(wù)器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-02-02
  • node.js中的fs.rmdir方法使用說明

    node.js中的fs.rmdir方法使用說明

    這篇文章主要介紹了node.js中的fs.rmdir方法使用說明,本文介紹了fs.rmdir方法說明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • Cli Todo命令行todo工具使用演示

    Cli Todo命令行todo工具使用演示

    這篇文章主要為大家介紹了Cli Todo命令行todo工具使用演示示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Node+Express搭建HTTPS服務(wù)的實(shí)現(xiàn)

    Node+Express搭建HTTPS服務(wù)的實(shí)現(xiàn)

    最近開發(fā)需要搭建一個(gè)https的服務(wù),正好最近在用nodejs和express,本文章主要介紹了Node+Express搭建HTTPS服務(wù)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12

最新評(píng)論