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,它類似于瀏覽器,但沒有沙盒。
添加回答
舉報
