PowerShell 是一種強大的指令碼語言,它可以執行許多任務,包括從網際網路下載和解析 HTML 內容。在本文中,我們將探討如何使用 PowerShell 執行這些任務。
下載 HTML 內容
PowerShell 提供了幾個命令來下載 HTML 內容。其中最常用的是 Invoke-WebRequest
命令。Invoke-WebRequest
命令接受一個 URL 作為輸入,並返回一個包含下載內容的物件。
以下是如何使用 Invoke-WebRequest
命令下載 HTML 內容的範例:
$htmlContent = Invoke-WebRequest -Uri "https://www.example.com"
此程式碼會下載 https://www.example.com
的 HTML 內容,並將其儲存在 $htmlContent
變數中。
解析 HTML 內容
一旦你下載了 HTML 內容,你就可以使用 PowerShell 的內建函數和物件模型來解析它。
- 使用
Select-String
命令:Select-String
命令可以搜尋文字中的特定模式。例如,你可以使用Select-String
命令從 HTML 內容中擷取標題標籤:
$title = $htmlContent.Content | Select-String -Pattern "<title>(.*?)</title>" | ForEach-Object {$_.Matches.Groups[1].Value}
- 使用
HtmlAgilityPack
模組:HtmlAgilityPack
是一個強大的 .NET 模組,它提供了許多方法來解析 HTML 內容。你可以使用Install-Module
命令安裝HtmlAgilityPack
模組:
Install-Module HtmlAgilityPack
然後,你可以使用以下程式碼使用 HtmlAgilityPack
來解析 HTML 內容:
Add-Type -AssemblyName HtmlAgilityPack
$htmlDoc = New-Object HtmlAgilityPack.HtmlDocument
$htmlDoc.LoadHtml($htmlContent.Content)
$title = $htmlDoc.DocumentNode.SelectSingleNode("//title").InnerText
此程式碼會建立一個 HtmlDocument
物件,並載入下載的 HTML 內容。然後,它會使用 SelectSingleNode
方法來尋找 title
標籤,並擷取其文字內容。
其他範例
以下是使用 PowerShell 下載和解析 HTML 內容的其他範例:
- 擷取所有連結的 URL:
$links = $htmlDoc.DocumentNode.SelectNodes("//a/@href")
foreach ($link in $links) {
Write-Host $link.Value
}
- 擷取所有圖片的 URL:
$images = $htmlDoc.DocumentNode.SelectNodes("//img/@src")
foreach ($image in $images) {
Write-Host $image.Value
}
- 擷取所有表格的內容:
$tables = $htmlDoc.DocumentNode.SelectNodes("//table")
foreach ($table in $tables) {
Write-Host "Table:"
foreach ($row in $table.SelectNodes(".//tr")) {
foreach ($cell in $row.SelectNodes(".//td")) {
Write-Host $cell.InnerText
}
}
}
總結
PowerShell 提供了許多方法來下載和解析 HTML 內容。Invoke-WebRequest
命令可用於下載 HTML 內容,而 Select-String
命令和 HtmlAgilityPack
模組可用於解析 HTML 內容。這些工具讓你可以從網際網路擷取資料,並以有意義的方式使用它。