webclient 没有完全下载网页
Posted
技术标签:
【中文标题】webclient 没有完全下载网页【英文标题】:webclient doesn't download the web page completely 【发布时间】:2013-05-31 08:34:37 【问题描述】:有下载页面的代码:
System.Net.WebClient client = new System.Net.WebClient();
client.Headers.Add("user-agent", "Mozilla/20.0.1");
byte[] feedBytes;
string url;
url = @"http://www.marathonbet.co.uk/en/betting/Football";
string fullPage = string.Empty;
try
feedBytes = client.DownloadData(url);
catch (System.Net.WebException)
return;
string fullPage = Encoding.UTF8.GetString(feedBytes);
因此,'fullpage' 仅包含页面的一部分。在浏览器中页面的加载是逐渐发生的。如何下载整页?
【问题讨论】:
为什么忽略异常?删除那个 try/catch 块,看看会发生什么。至少,捕获异常并显示ex.ToString()
,这样您就知道出了什么问题。
您的代码对我有用。执行您的代码后,我在fullPage
中获得了整页...
nemsv - 我想你收到了大约 300 Kb 的信息,整页超过 2 Mb
添加以捕获 'Console.WriteLine("WebException");'。结果没有改变。
问题很可能是页面使用javascript生成内容,而WebClient.DownloadData
不执行JavaScript;它只是下载那一页。
【参考方案1】:
试试这个
public static string GethtmlDocument(string url)
var result = "";
using (var wc = new WebClient())
result = wc.DownloadString(url);
return result;
【讨论】:
仅供参考,您可以使用return wc.DownloadString(url);
没有区别 - 结果只包含页面的一小部分(大约 3-5%)
这意味着,在文档加载之后可能会加载动态内容。您对此无能为力。
不存在下载动态内容的方式?
您不会下载动态内容。您执行生成动态内容的脚本。以上是关于webclient 没有完全下载网页的主要内容,如果未能解决你的问题,请参考以下文章
用webclient下载网页,需要post方式传值,可为啥通过uploadvalues函数下载不成功
c#中webclient,httpwebrequest,webbroser哪个获取网页快