下载一个完整的HTML页面
本文关键字:HTML 页面 一个 下载 | 更新日期: 2023-09-27 18:03:22
如果这个问题已经有人回答了,我很抱歉,但我确实花了两个多星期的时间在互联网上搜索我的问题的解决方案。现在,我肯定没有进行最好的谷歌搜索,而且看起来我的问题在互联网上有几个有效的答案。但我真的尝试了我找到的每一个解决方案,没有任何积极的结果。
我想做的很简单,我在很多网站上都成功地做到了:
- 浏览网页(1).
- 等待一切正确加载(文档完成事件)。
- 使用DocumentText属性(1)下载页面。
(1):我也经常使用WebClient。
就这样,我得到了html页面,我可以随心所欲地利用它。问题是与一个特定的网站,我不能获得完整的内容,尽管使用所有不同的解决方案,我发现。我怀疑这个页面可能需要加载几个脚本才能获得完整的内容。再一次,我读到WebBrowser在触发"完成"事件之前运行所有必要的脚本,所以,显然,这不是问题。我要查询的页面是:http://www.coolmod#com/tarjetas-graficas-nvidia-pci-express
我尝试了,之后WebBrowser加载整个页面,寻找随机元素使用GetElementByID属性和检查如果我得到一个空结果。似乎当我尝试获取不属于产品列表的元素时,我成功了。但是,每当我试图获取一个属于列表本身的元素时,我总是得到一个空。也就是说,列表本身不会加载。我真的不知道为什么顺便说一下,我不阻止网络浏览器。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);
}
感谢您花时间阅读这些
System.Windows.Forms。WebBrowser有点过时了,如果我是你,我会考虑使用外部库,Selenium将是我的第一选择,因为它具有与。net框架(以及许多其他语言)的所有必要集成