cyoyo

cyoyo

人生就像一场旅行,不必在乎目的地,只要沿途有美景,内心有阳光。

Cursor:GPT-4 驱动的强大代码编辑器,你听过吗?

Cursor (https://www.cursor.so/)是 GPT-4 驱动的一款强大代码编辑器,可以辅助程序员进行日常的编码。

1679124987(1)
这个例子做的事情是网页抓取。抓取的目标是百度首页上的百度热搜,如下图所示。

1679125033(1)
我用的是 JavaScript 来实现的。

同时按下 Ctrl + K,给出的提示是:抓取 https://www.baidu.com/ 网站上的百度热搜。

Cursor 很快就给出了下面的一段代码。

// 使用 axios 和 cheerio 库抓取 https://www.baidu.com/ 网站上的百度热搜

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

async function fetchBaiduHotSearch() {
  try {
    const response = await axios.get("https://www.baidu.com/");
    const $ = cheerio.load(response.data);
    const hotSearchList = [];

    $(".hotsearch-item").each((index, element) => {
      const title = $(element).find(".title-content-title").text().trim();
      hotSearchList.push(title);
    });

    console.log(hotSearchList);
  } catch (error) {
    console.error("Error fetching Baidu Hot Search:", error);
  }
}

fetchBaiduHotSearch();

我的问题是:这段代码可以运行吗?

GPT-4 解释了这段代码的运行原理,还告诉我要用 npm 安装 axios 和 cheerio 库。

我的问题是:这段代码可以运行吗?

GPT-4 解释了这段代码的运行原理,还告诉我要用 npm 安装 axios 和 cheerio 库。

1679125162(1)
运行了之后,发现输出结果为空数组。

把错误反馈给 GPT-4,它建议查看网页结构中的 CSS 选择器。

1679125190(1)

确认网页结构没有问题,反馈给 GPT-4。它进一步建议修改 HTTP 的 User-Agent 头来绕开百度的反爬虫处理。

1679125212(1)
按照 GPT-4 给出的代码进行修改。运行之后就得到了正确的结果。
下面是最后产生的代码:


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

async function fetchBaiduHotSearch() {
  try {
    const response = await axios.get("https://www.baidu.com/", {
      headers: {
        "User-Agent":
          "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
        Referer: "https://www.baidu.com/",
      },
    });

    const $ = cheerio.load(response.data);
    const hotSearchList = [];

    $(".hotsearch-item").each((index, element) => {
      const title = $(element).find(".title-content-title").text().trim();
      hotSearchList.push(title);
    });

    console.log(hotSearchList);
  } catch (error) {
    console.error("Error fetching Baidu Hot Search:", error);
  }
}

fetchBaiduHotSearch();
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。