有想到什麼再寫什麼,沒想到什麼就算了

使用PowerShell下載並解析HTML內容

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 內容。這些工具讓你可以從網際網路擷取資料,並以有意義的方式使用它。

提示