我正在尝试抓取此元素:上的this website。
我的JS代码:
const puppeteer = require("puppeteer");
const url = 'https://magicseaweed.com/Bore-Surf-Report/1886/'
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url);
const title = await page.$x('/html/body/div[1]/div[2]/div[2]/div/div[2]/div[2]/div[2]/div/div/div[1]/div/header/h3/div[1]/span[1]')
let text = await page.evaluate(res => res.textContext, title[0])
console.log(text) // UNDEFINED
文本未定义。这里有什么问题?谢谢。
答案 0 :(得分:1)
我认为您需要在代码中修复1或2个问题。
对于您想要的xpath内容应该是:
const title = await page.$x('/html/body/div[1]/div[2]/div[2]/div/div[2]/div[2]/div[2]/div/div/div[1]/div/div[1]/div[1]/div/div[2]/ul[1]/li[1]/text()')
并获得此内容:
const text = await page.evaluate(el => {
return el.textContent.trim()
}, title[0])
请注意,您需要将title [0]发送为页面函数的参数。
OR
如果您不需要使用xpath,似乎可以直接使用类名来查找元素:
const rating = await page.evaluate(() => {
return $('.rating.rating-large.clearfix > li.rating-text')[0].textContent.trim()
})