链接中抓取数据"/>
使用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提取的链接中抓取数据
发布评论