0

我嘗試使用PowerShell從網站獲取值時,今天遇到問題。PowerShell無法從HTML獲取元素

這是website

我想在這裏得到數字「90」,在網頁本身就是「下載」的值(如果有更多的下載,這個數字可能會稍大一些):Screenshot of the element i am trying to return

<span title="Downloads" class="mod-card-info-tag" data-reactid=".0.0.0.2.0.0.2.2"> 
<div class="mod-card-info-tag-label" data-reactid=".0.0.0.2.0.0.2.2.0">90</div> 

這是我曾經嘗試並獲得從上面(我知道我應該在結尾使用「.innertext」的元素數「90」,我只是用GET-成員是否在PowerShell代碼任何對象被發現):

$URI = "https://mods.factorio.com/mods/TpTheGreat/TpTheGreats%20Large%20Roboport%20Logistics%20Area" 
$HTML = Invoke-WebRequest -Uri $URI 

($HTML.ParsedHtml.getElementsByTagName("div") | Where{ $_.className -eq ‘mod-card-info-tag-label’ }) | Get-Member 

當通過標籤調用元素像我上面的代碼中的名稱,我得到一個空的對象。 我嘗試了很多沒有成功的事情。

如果你們中的任何人都能看一看,並檢查你是否能夠解決我的問題,那將會非常棒。 非常感謝!

回答

0

如何另一種方法:

$URI = "https://mods.factorio.com/mods/TpTheGreat/TpTheGreats%20Large%20Roboport%20Logistics%20Area" 
$HTML = Invoke-WebRequest -Uri $URI 
$arr = $HTML.AllElements.Item(9).innerHTML -split ' = ' 

$myObj = $arr[1].replace("`n"," ") 

$myObj = $myObj.replace(";","") | ConvertFrom-Json 

$myObj.mod.mod.downloads_count 
+0

非常感謝! 它的作品! 只有一個問題 - 你有一個想法,爲什麼我的方法不起作用?我看到很多關於在線使用這種方法的建議,但它似乎對我無效 – TpTheGreat

+0

我認爲對於純html網站,您的方法應該可以正常工作,但在這種情況下,該網站似乎使用「react」和'javascript'在執行時渲染站點。 – Hackerman