最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

网站源码admin38浏览0评论

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

使用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的形式返回数据。

发布评论

评论列表(0)

  1. 暂无评论