在动态网站上使用PowerShell解析HTML

时间:2016-05-12 00:54:14

标签: powershell html-parsing

有没有办法使用Invoke-WebRequest cmdlet从http://www.pgatour.com站点解析HTML?当我尝试这样做时,ParsedHtml不包含我需要的元素(因为cmdlet错误地解析了页面)。 我尝试通过在PowerShell中创建IE COM对象来获取此页面中的数据并且它可以正常工作,但速度非常慢,所以我想知道是否有其他方法使用Invoke-WebRequest(甚至是外部解析器)。

谢谢!

2 个答案:

答案 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是你的朋友。