有一個使用“Invoke-WebRequest”匯出到變數的 HTML 檔案,我想從其中匯出特定表中的內容。
$Result = Invoke-WebRequest 'https://www.dailyfaceoff.com/teams/anaheim-ducks/line-combinations'
不幸的是,使用 $result.parsedHTML 不會回傳任何結果。因此,我正在考慮使用正則運算式來查找字串。這就是我尋求你幫助的地方。
要求的行動:
- 在 HTML 檔案中搜索 id=LW1 的表
- 在此單元格中搜索 <span class=name>Hello World</span>
- 匯出內容“Hello World”
HTML結構:
<body ...>
<div ...>
<tbody>
<td id="LW1">
<a ....>
<span class="player-name">Hello World</span>
</a>
</td>
</tbody>
</div>
</body>
提前感謝您的任何意見或幫助!
嘗試1:
$r = Invoke-WebRequest 'https://www.dailyfaceoff.com/teams/anaheim-ducks/line-combinations'
$table = $r.ParsedHtml.getElementsByTagName("table")
結果 1:沒有輸出,看起來 HTML 結構阻止了決議操作。
嘗試2:
$r = Invoke-WebRequest 'https://www.dailyfaceoff.com/teams/anaheim-ducks/line-combinations'
$string = ($r.Content |
where {$_ -match '^a href.*LW1.*\ title=.*>/span.*'}) -replace '.*>'
結果 2:正則運算式不匹配
uj5u.com熱心網友回復:
請不要嘗試使用正則運算式決議 HTML,這是一個糟糕的主意。您可以使用Com Object在 PowerShell Core 和 Windows PowerShell 中執行此操作:
$com = New-Object -ComObject htmlfile
$com.write([System.Text.Encoding]::Unicode.GetBytes(@'
<body>
<div>
<tbody>
<td id="LW1">
<a>
<span >Hello World</span>
</a>
</td>
</tbody>
</div>
</body>
'@))
$com.getElementsByClassName('player-name') | ForEach-Object innerHtml
# Outputs: Hello World
$null = [System.Runtime.InteropServices.Marshal]::ReleaseComObject($com)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/528449.html
