在Powershell中,有没有办法将html转换为具有深度的对象?

时间:2017-10-27 22:26:41

标签: html powershell parsing

我正与Powershell合作尝试网页编写,并想知道是否有更简单的方法来处理元素?

有没有办法将一个Html页面转换为PowerShell中具有适当深度的对象?类似于Convert-ToJson -Depth的东西?

例如,要获得某些结果:

$page = Invoke-WebRequest -uri $URI
Write-Host $page.html.body.div[4].a[5]

或者

$page = Invoke-WebRequest -uri $URI
$divs = $page.getElementsbyID("image-div")
$thumbs = $ $divs.getElementsbyID("thumbnails")
Write-host $thumbs[4]

Powershell中是否有一些附加组件或功能可以将html解析为具有深度的对象?

2 个答案:

答案 0 :(得分:0)

是的,public function getFamilyMembers() { return $this->hasMany(Person::className(), ['familyId' => 'familyId']); } 为您提供了对象结构。

作为向您学习如何在$person = Person::find() ->with('familyMembers') ->where(['id'=>1]); foreach($person->family as $m) { var_dump($m); } 中发现此类功能的提示:将对象移植到$page.ParsedHtml以查看所有可用的属性/方法等。并快速查看所有属性是什么,你可以将它传递给PowerShell

答案 1 :(得分:-1)

您可能正在寻找getElementsByTagName

$ret = invoke-webrequest -uri [uri]

$ret.parsedhtml.getelementsbytagname('table')[0] 

获取html文档中的第一个表

$ret.parsedhtml.getelementsbytagname('tr')[0]

获取HTML文档中的第一行<tr>行。