2011-12-16 12 views
2

Webページをダウンロードして解析しようとしています。私はHTML文書のすべてのノードに到達する必要があります。だから私は完璧に動作するWebClientをダウンロードしました。その後、私は、文書解析するために、次のコード・セグメントを使用します。最後の行でC#、XmlDocument.LoadXmlでWebページを解析する

WebClient client = new WebClient(); 

Stream data = client.OpenRead("http://web.cs.hacettepe.edu.tr/~bil339/"); 
StreamReader reader = new StreamReader(data); 
string xml = reader.ReadToEnd(); 

data.Close(); 
reader.Close(); 
XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.loadXml(xml); 

を、プログラムは、しばらくの間待機し、クラッシュ。 HTMLコードにエラーがありますが、これは期待できませんでした。ここにはいけないなどです。 これを修正するための提案はありますか? HTMLコードを解析するための他のテクニックは歓迎します(もちろんC#で)

+0

loadxmlはxml文書を期待していますが、htmlページの場合は例外をスローします –

+0

xhtmlに準拠しているページはXMLリーダーで解析できますが、_any_ htmlページを解析するには特別なhtmlパーサを使用する必要があります。 – Denis

+0

@kashifここをクリックしてください:http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.loadxml(v=VS.85).aspx デニスあなたはそうです、この方法は作業。 – Mikael

答えて

7

HTMLを解析するのにHTMLAgilityPackを使用してください。整形式HTMLはXMLではなく、そのまま解析することはできません。たとえば、すべてのXMLファイルに必要なプリアンブルがありません。 HTMLアジリティパックはより寛容です。

関連する問題