有没有办法使用Invoke-WebRequest cmdlet从http://www.pgatour.com站点解析HTML?当我尝试这样做时,ParsedHtml不包含我需要的元素(因为cmdlet错误地解析了页面)。 我尝试通过在PowerShell中创建IE COM对象来获取此页面中的数据并且它可以正常工作,但速度非常慢,所以我想知道是否有其他方法使用Invoke-WebRequest(甚至是外部解析器)。
谢谢!
答案 0 :(得分:0)
您可以尝试HmtlAgilityPack来解析Invoke-WebRequest
返回的内容。在这种情况下,我会使用-UseBasicParsing
参数。
答案 1 :(得分:0)
Window 10 64位。 PowerShell 5.1
使用Invoke-WebRequest和正则表达式在动态站点上使用PowerShell 5.1在HTML上解析HTML,该正则表达式返回未嵌套标签(如<html>,<title>,<head>
和<body>
之间的所有内容。嵌套标签需要一些调整。
Invoke-WebRequest -Uri http://www.pgatour.com | sc golf.html
(gc -raw golf.html) -match '(<body>)(.*|\n).*?(<\/body>)'
$matches[0]
<div class="success-message">
和下一个</div>
之间的所有内容
Invoke-WebRequest -Uri http://www.pgatour.com | sc golf.html
(gc -raw golf.html) -match '(<div class="success-message">)(.*?|\n)*(<\/div>)'
$matches[0]
Greedy and lazy quantifiers explained
regex101.com是你的朋友。