我正与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解析为具有深度的对象?
答案 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>
行。