如何使用此代码从特定页面获取所有项目,例如src,标题和url?

时间:2019-05-07 04:26:44

标签: node.js web-scraping puppeteer

我一直在使用npm puppeteer在node.js中进行Web抓取代码的工作,以获取页面中每个新闻的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();
})()

1 个答案:

答案 0 :(得分:0)

因为页面中只有一个.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

让我知道是否需要更多帮助