对不起,如果这个问题已经得到了解答,但我花了两周多的时间在互联网上寻找解决问题的方法。 现在,我绝对不会执行最好的谷歌搜索,似乎我的问题在互联网上有几个有效的答案。但我真的尝试过我发现的每一个解决方案,没有任何积极的结果。
我想做的事情很简单,我在许多网站上成功做到了:
(1):我也经常使用WebClient。
就是这样,我得到了html页面,无论如何我都可以利用它。问题出在一个特定的网站上,尽管使用了我发现的所有不同的解决方案,但我无法获得完整的内容。我怀疑在获取完整内容之前,此页面可能需要加载多个脚本。再一次,我读到WebBrowser在触发"之前运行所有必需的脚本。已完成"事件,显然,这不是问题。我查询的页面是:http://www.coolmod#com/tarjetas-graficas-nvidia-pci-express
我试过,之后WebBrowser加载整个页面,使用GetElementByID属性查找随机元素,并检查是否得到null结果。看来,当我尝试获取不属于产品列表的元素时,我很成功。但是,每当我尝试获取属于列表的元素时,我总是得到一个null。这意味着,它自己没有加载的列表。我真的不知道为什么。顺便说一下,我没有阻止WebBrowser。 Navigate()从提供多个响应,我允许它提供尽可能多的反馈,但仍然,即使我通过cookie,产品列表也不会加载。我甚至尝试复制文档的所有内容并将其粘贴到剪贴板中。这是我尝试做的一个简单示例:
private void catalogueDownload()
{
System.Windows.Forms.WebBrowser wb = new System.Windows.Forms.WebBrowser();
wb.ScriptErrorsSuppressed = true;
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Catalogue_DocumentCompleted);
wb.Navigate("http://www.coolmod.com/tarjetas-graficas-nvidia-pci-express");
}
public void Catalogue_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var wb = sender as System.Windows.Forms.WebBrowser;
string output = wb.DocumentText;
File.WriteAllText("testing.html", output);
}
感谢您放弃阅读所有这些内容的时间。
答案 0 :(得分:1)
System.Windows.Forms.WebBrowser有点过时,如果我是你,我会考虑使用外部库,Selenium将是我的第一选择,因为它具有所有必要的集成。 .NET Framework(以及许多其他语言)