【发布时间】:2013-09-15 19:10:06
【问题描述】:
我正在尝试解析网站的 HTML,比如 CNN.com,但每次我使用 WebBrowser 对象导航时,我的对象都会得到一堆空值。我没有使用 HTML 敏捷包。每当我调用 Navigate 方法时,mywebBrowser 都包含 null 和空白值。如何让 tagCollection 填充?我尝试执行 webClient.DownloadString 只是为了获取 HTML 页面的所有内容,但我不能使用它,因为我需要找到所有标签并且手动执行非常麻烦。我也不能使用 HTML Agility Pack。
using (WebClient webClient = new WebClient())
{
webClient.Encoding = Encoding.UTF8;
HtmlString = webClient.DownloadString(textBox1.Text);
}
WebBrowser mywebBrowser = new WebBrowser();
Uri address = new Uri("http://www.cnn.com/");
mywebBrowser.Navigate(address);
//HtmlString does contain all the HTML from Page
mywebBrowser.DocumentText = HtmlString;
//DocumentText only has "<HTML></HTML> after assignment
HtmlDocument doc = mywebBrowser.Document;
HtmlElementCollection tagCollection;
tagCollection = doc.GetElementsByTagName("<div");
【问题讨论】:
-
为什么不能使用 HtmlAgilityPack?
-
@DGibbs 我认为 OP 在不能使用 HtmlAgilityPack 方面非常清楚:) (原因听起来不太重要)。只是,出于好奇,也许是因为我将 WebBrowser 用于非常具体的任务,但我不确定使用 HthmlAgilityPack 的原因。你能解释一下 HtmlAgilityPack 能做什么而 WebBrowser 不能吗?
-
@varocarbas 他当然很清楚。然而,不清楚的是为什么他不能使用这个库。如果您需要解析 HTML,那么它非常适合这项工作,并且您最好有充分的理由不选择它而不是其他不太成功的方法...
-
@DGibbs 我确实理解您的担忧,这就是我写“(原因听起来不太重要)。”的原因。你一直说它更好,我的问题是为什么它更好?我并不是说这不是更好,只是要求提供更多信息(如果您可以/想要提供它)。通过依赖 WebBrowser 的 HtmlElementCollection 来遍历任何 html 元素,我从来没有遇到过任何问题(如原始代码或我的回答中所示),所以我不确定为什么 HtmlAgilityPack 更好(至少在这方面) .
-
我想避免任何许可问题
标签: c# html parsing browser dom