2011-09-20 76 views
2

繼承人我的代碼:如何設置編碼HtmlAgilityPack的HTMLDocument

HtmlWeb hw = new HtmlWeb(); 

HtmlAgilityPack.HtmlDocument htmlDoc = hw.Load(@"www.SomeForeignURL.com"); 

返回的HTML頁面包含看起來奇怪的字符,我還想指定編碼返回的文檔爲UTF-8。我該如何解決這個問題?

(試圖加載文檔,像這樣:htmlDoc.Load(「URL」,Encoding.UTF8),但它返回一個錯誤說,URI不支持或類似的東西。)

回答

0

它可能不是有幫助,但我遇到了Load()方法靜靜地失敗,可能無法檢測格式的問題,並通過首先將文件加載到字符串中(我使用另一個函數來下載文件)來解決此問題。然後我使用LoadHTML()方法。我晚了一年回答,我使用的不是C#的powershell,但提示可能仍然適用。

見第二最後一行:它只是讀取文件轉換成字符串並passess到LoadHTML()

# http://www.leeholmes.com/blog/2010/03/05/html-agility-pack-rocks-your-screen- 

scraping-world/ 
function DownloadFile { 
Param([Parameter(mandatory=$true)]$source , 
    [Parameter(mandatory=$true)]$destination) 


    $wc = New-Object System.Net.WebClient 
    $wc.DownloadFile($source, $destination) 
} 

$erroractionpreference = 'stop' 
Set-Strictmode -version 2 

DownloadFile "http://someurl/index.php?action=searchplayer&server=0&player=%" "$pwd\all.php" 

$types = add-type -Path .\agilitypack\HtmlAgilityPack.dll 
$doc = New-Object HtmlAgilityPack.HtmlDocument 
$doc.LoadHtml([string](get-content .\all.html)) 
$doc