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