如何评估XpathResult的Xpath?

时间:2020-07-30 06:14:54

标签: javascript xpath web-scraping puppeteer

我想从Argos等在线商店中抓取数据。 Argos的每个产品都有其卡,因此,我想首先获取所有产品卡节点的列表,然后访问这些节点中每个节点上的特定Xpath。

使用下面的代码,我可以在页面上获得所有唯一产品卡的列表,但是,当我尝试查看每个产品上的“名称” Xpath时,它们都返回完全相同的节点(第一个产品的“名称”节点)。我在做什么错了?

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setUserAgent('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36');
await page.goto("https://www.argos.co.uk/clearance/toys/c:30299/clearance:true/opt/page:1");
await page.waitForXPath("//div[@data-test='component-product-card']")
let p = await page.evaluate( () => {
    const prods = document.evaluate("//div[@data-test='component-product-card']", document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null)
    while(prod = prods.iterateNext()){
        let name = document.evaluate("//a[@itemprop='name']", prod, null, XPathResult.STRING_TYPE, null)
    }
})

0 个答案:

没有答案