【发布时间】:2020-04-06 18:39:06
【问题描述】:
尝试使用 [code] 选择器从链接的 Sales Navigator Search 中获取网络响应(仅元数据)。
我可以通过使用绝对路径$x("/html/body/code[9]")[0].innerHTML 来获取这个元素或文本
但我想更通用,以防这条路径被改变,包含文本前“元数据”
还有其他方法吗?
【问题讨论】:
标签: jquery jquery-selectors puppeteer
尝试使用 [code] 选择器从链接的 Sales Navigator Search 中获取网络响应(仅元数据)。
我可以通过使用绝对路径$x("/html/body/code[9]")[0].innerHTML 来获取这个元素或文本
但我想更通用,以防这条路径被改变,包含文本前“元数据”
还有其他方法吗?
【问题讨论】:
标签: jquery jquery-selectors puppeteer
尽量做最简单的。
const metadatas = await page.evaluate ( () => {
let metadatas = []
document.querySelectorAll('body > code[style="display: none"]').forEach(code => {
if ( code.innerText.search('{"metadata":"') > -1 && code.innerText.search('{"metadata":"') < 10 ) {
metadatas.push (code.innerText)
}
})
return (metadatas)
})
metadatas.forEach( metadata => console.log ( JSON.parse(metadata) ) )
如果您确定$("code")[8].innerHTML 将包含元数据,您可以这样编写代码。
const metadatas = await page.evaluate ( () => {
let metadatas = []
document.querySelectorAll('body > code[style="display: none"]:nth-of-type(9)').forEach(code => {
metadatas.push (code.innerText)
})
return (metadatas)
})
metadatas.forEach( metadata => console.log ( JSON.parse(metadata) ) )
【讨论】: