【问题标题】:In Powershell, is there a way to convert html to a object with depth?在 Powershell 中,有没有办法将 html 转换为具有深度的对象?
【发布时间】:2018-04-09 14:25:35
【问题描述】:

我正在使用 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 解析为具有深度的对象?

【问题讨论】:

标签: html powershell parsing


【解决方案1】:

是的,$page.ParsedHtml 为您提供对象结构。

作为提示您了解如何在 PowerShell 中发现此类功能:将您的对象通过管道传输到 Get-Member 以查看所有可用的属性/方法等。要快速查看所有属性是什么,您可以通过管道传输发给select *

【讨论】:

  • 我看过 Parsedhtml。 $x = Invoke-WebRequest -Uri "relatedwords.org/relatedto/winter" $y = $x.ParsedHtml.getElementById("results-area") $y.childNodes[7] #这给了我“words” div,但无法访问链接#我想要得到的是非常深入的解析(比如 xml)
【解决方案2】:

您可能正在寻找getElementsByTagName

$ret = invoke-webrequest -uri [uri]

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

为您获取 html 文档中的第一个表格

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

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

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 2010-11-05
    • 2022-06-15
    • 2020-09-18
    • 2013-03-24
    • 1970-01-01
    相关资源
    最近更新 更多