我如何使用此代码从特定页面获取所有项目,如 src、标题和 url?
How can i get all the items like src, titles and url from specific page using this code?
我一直在 node.js 的网络抓取代码中工作,使用 npm puppeteer 从页面中的每个新闻中获取 url、图像和标题,但我唯一能够做到的从第一条新闻中获取 url、图像和标题。
const puppeteer = require('puppeteer');
(async () => {
const brower = await puppeteer.launch();
const page = await brower.newPage();
const url = 'https://es.cointelegraph.com/category/latest';
await page.goto(url, { waitUntil: 'load' });
const datos = await page.evaluate(() => Array.from(document.querySelectorAll('.categories-page__list'))
.map( info => ({
titulo: info.querySelector('.post-preview-item-inline__title').innerText.trim(),
link: info.querySelector('.post-preview-item-inline__title-link').href,
imagen: info.querySelector('.post-preview-item-inline__figure .lazy-image__wrp img ').src
}))
)
console.log(datos);
await page.close();
await brower.close();
})()
因为页面中只有一个.categories-page__list
,而.post-preview-list-inline__item
个元素很多
你 map
遍历了一个从 document.querySelectorAll('.categories-page__list')
返回的数组,但是这个数组只有一个元素,运行 map
闭包只有一次是正确的。
所以,替换
document.querySelectorAll('.categories-page__list')
和
document.querySelectorAll('.post-preview-list-inline__item')
一切正常。
在这里你可以找到 working example.
如果您需要更多帮助,请告诉我
我一直在 node.js 的网络抓取代码中工作,使用 npm puppeteer 从页面中的每个新闻中获取 url、图像和标题,但我唯一能够做到的从第一条新闻中获取 url、图像和标题。
const puppeteer = require('puppeteer');
(async () => {
const brower = await puppeteer.launch();
const page = await brower.newPage();
const url = 'https://es.cointelegraph.com/category/latest';
await page.goto(url, { waitUntil: 'load' });
const datos = await page.evaluate(() => Array.from(document.querySelectorAll('.categories-page__list'))
.map( info => ({
titulo: info.querySelector('.post-preview-item-inline__title').innerText.trim(),
link: info.querySelector('.post-preview-item-inline__title-link').href,
imagen: info.querySelector('.post-preview-item-inline__figure .lazy-image__wrp img ').src
}))
)
console.log(datos);
await page.close();
await brower.close();
})()
因为页面中只有一个.categories-page__list
,而.post-preview-list-inline__item
个元素很多
你 map
遍历了一个从 document.querySelectorAll('.categories-page__list')
返回的数组,但是这个数组只有一个元素,运行 map
闭包只有一次是正确的。
所以,替换
document.querySelectorAll('.categories-page__list')
和
document.querySelectorAll('.post-preview-list-inline__item')
一切正常。
在这里你可以找到 working example.
如果您需要更多帮助,请告诉我