【发布时间】:2011-07-18 20:58:02
【问题描述】:
我有一些代码可以下载我已经使用了一段时间的网页内容。此代码工作正常,从未提供过问题,但仍然没有......但是,有一个相当大的页面(2MB,无图像)有 4 个表,分别有 4、20、100、600 行和大约 20列宽。
当尝试获取所有数据时,它在没有任何明显错误或异常的情况下完成,但仅返回第 4 个表中的第 60 行左右 - 有时更多,有时更少。浏览器在大约 20 到 30 秒内完成加载,并持续(看起来像是刷新)到页面直到完成。
我尝试了 SO 的多种解决方案,并进行了搜索,但没有任何不同的结果。以下是当前代码,但我有:代理、异步、无超时、错误的保活...
我不能使用 WebClient(作为另一个远程尝试),因为我需要使用 cookiecontainer 登录。
HttpWebRequest pageImport = (HttpWebRequest)WebRequest.Create(importUri);
pageImport.ReadWriteTimeout = Int32.MaxValue;
pageImport.Timeout = Int32.MaxValue;
pageImport.UserAgent = "User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3";
pageImport.Accept = "Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
pageImport.KeepAlive = true;
pageImport.Timeout = Int32.MaxValue;
pageImport.ReadWriteTimeout = Int32.MaxValue;
pageImport.MaximumResponseHeadersLength = Int32.MaxValue;
if (null != LoginCookieContainer)
{
pageImport.CookieContainer = LoginCookieContainer;
}
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
using (WebResponse response = pageImport.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream, encode))
{
stream.Flush();
HtmlRetrieved = reader.ReadToEnd();
}
【问题讨论】:
标签: c# .net httpwebrequest screen-scraping httpwebresponse