[英]Different response received when using HttpClient and browser
我正在尝试刮擦nse网站,但是当我使用此方法尝试时
static async void DownloadPageAsync(string url)
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "text/html,application/xhtml+xml,application/xml");
client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Charset", "ISO-8859-1");
HttpResponseMessage response = await client.GetAsync(url);
Thread.Sleep(30000);
response.EnsureSuccessStatusCode();
var responseStream = await response.Content.ReadAsStreamAsync();
var streamReader = new StreamReader(responseStream);
var str = streamReader.ReadToEnd();
}
我得到这个回应
但是当我尝试通过chrome访问相同的链接时,我的回应是..
我在哪里错了..如何通过代码获取Chrome响应...请帮助..关于Srivastava
因此,首先,抓取网页不是一件容易的事。 特别正确的HTML解析非常棘手。
在开始编写Web爬网程序之前,还应注意一些有关Web爬网的网络礼节。 特别是要写下有关如何在浏览器中查找有关Web搜寻器的更多信息的详细信息。 换句话说,不要这样做,而要使其更加精美-即使由于浏览器检测而需要“ Gecko”,也应在“((......))”之间放置一些内容。
client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");
众所周知,在Web搜寻器中很难处理的一件事是AJAX调用。 使用错误的用户代理甚至可能使情况变得更糟,某些网站会根据浏览器功能决定是否使用AJAX。 对于此问题,最好简单地假设您无法在抓取工具中正确处理Javascript或AJAX(尽管事实更加复杂,在这里进行描述将花费很长时间...)。
了解一些股票网站,我认为这也是您的问题。 这些数字通常使用AJAX“实时”刷新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.