使用cheerio从使用cheerio提取的链接中抓取数据

编程入门 行业动态 更新时间:2024-10-10 10:31:05

使用cheerio从使用cheerio提取的<a href=https://www.elefans.com/category/jswz/34/1771394.html style=链接中抓取数据"/>

使用cheerio从使用cheerio提取的链接中抓取数据

正在使用cheerio和nodejs从allegro网站获取数据以在API中创建端点,该API向csv数据返回此数据,稍后将作为数据科学项目的一部分进行研究:

要获取汽车信息,我设法从首页上抓取了各个链接,每个链接将您发送到汽车(汽车项目)以查看汽车的完整信息,我需要从每个链接中抓取更多数据,我该如何这样做吗?

以及如何使json数据显示为csv呢?

这里使用的代码:

const url =
  "";

//const writeStream = fs.createWriteStream("allegro.csv");
// Write Headers
//writeStream.write(`Price,Link \n`);

function getCars() {
  return fetch(`${url}`)
    .then((response) => response.text())
    .then((body) => {
      const cars = [];
      const $ = cheerio.load(body);
      $("._9c44d_2H7Kt").each(function (i, el) {
        const $price = $(el).find("._9c44d_1zemI");
        const $link = $(el).find("a");
        const $year = $(el).find("dd");
        const $make = $(el).find("h2");

        const car = {
          price: $price.text().replace(/\s\s+/g, ""),
          link: $link.attr("href"),
          year: $year.first().next().next().text(),
          make: $make.text(),
        };
        cars.push(car);
      });

      // Write Row to CSV
      // writeStream.write(`${price},${link} \n`);
      return cars;
    });
}

用于nodejs端点的代码:

app.get("/scraping/:allegro", (req, res) => {
  scraper.getCars(req.param.allegro).then((cars) => {
    //console.log(cars);
    res.json(cars);
  });

从每个链接获取的数据如下:添加日期,型号,电话号码,城市,年份

回答如下:

这些页面有一个方便的地方,就是您可以通过将媒体类型设置为application/json(例如设置Accept标头)来以JSON而不是html的形式返回数据。

更多推荐

使用cheerio从使用cheerio提取的链接中抓取数据

本文发布于:2024-05-13 10:42:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759439.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:链接   数据   cheerio

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!