我目前正在撰寫一個機器人來從網路實時代碼中獲取資料。因此,我創建了一個應用程式,它使用 Python QWebEngineView 顯示網路瀏覽器。現在,如果我想從我當前使用的網站的 html 代碼中獲取特殊值:
self.browser.page().runJavaScript(
"document.getElementsByClassName('team-score')",
self.__update_points
)
(瀏覽器是 QEngineWebView)。該網站的 HTML 如下所示:(僅有趣的片段)
<div _ngcontent-jnr-c126="" class="set-scores">
<div _ngcontent-jnr-c126="" class="team-score">2</div>
:
<div _ngcontent-jnr-c126="" class="team-score">2</div>
</div>
我的目標是提取兩個點值 ( ),但是當我運行 JS 命令時,它只會拋出{}這兩個物件應該在哪里。
uj5u.com熱心網友回復:
document.getElementsByClassName回傳一個 HTMLCollection 物件。它是可迭代的,因此可以使用擴展運算子輕松將其轉換為陣列。
正如我的評論中提到的,嘗試[...document.getElementsByClassName('team-score')].map(el => el.innerText).
之所以只回傳一個空物件,是因為HTMLCollectionJSON.stringify()的回傳值是just ,在使用QWebEngineView之類的工具時,有幾種情況是不能傳遞參考的。this 中的物件將被傳遞并發送給擴展/作業者或其他任何東西,因此您可能會以無用的結果結束。{}JSON.stringify()
將其轉換為 Array[...HTMLCollection]并隨后將其映射到值的 innerText 將導致[2,2].
另一種解決方案是:(document.querySelector(".set-scores").textContent或innerText),這可能會導致類似"2:2".
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/494778.html
標籤:javascript Python qwebengineview angular2-ng内容
