2 回答
TA贡献1850条经验 获得超11个赞
我只是想到了另一种方式。因为所有 URL 都在同一个域中,所以您实际上可以在 iframe 中打开它们,并且您可以从脚本中访问每个 iframe 的内容。看起来是这样的:
for (const url of urls) {
const iframe = document.createElement('iframe')
iframe.src = url
iframe.onload = () => {
console.log(iframe.contentDocument.querySelector("body > div:nth-child(7) > div.listheader"))
}
document.body.appendChild(iframe)
}
请注意,onload回调是异步的,因此您将以任意顺序获得输出。此外,没有错误处理(onerror为此附加回调)。
如果您有大量的 URL 需要抓取,您可能不希望像这样同时执行所有这些操作,因为每个 iframe 就像一个单独的浏览器选项卡并且占用大量资源。所以你可以分批做,或者在前一个完成后才开始下一个。
TA贡献1810条经验 获得超5个赞
在浏览器控制台中,您会遇到麻烦,因为您在那里编写的所有 JavaScript 都将在当前页面的上下文中运行。一旦你打开一个新页面,你就会失去它。
您可以使用 NodeJS 来做到这一点,它是一个在浏览器之外运行的独立 JavaScript 引擎。您需要编写代码来获取 HTML,以及一个库来解析和查询它。
另一种方法可能是 NW.js,它类似于浏览器,但没有沙盒。
添加回答
举报
