繁体   English   中英

使用HttpClient和浏览器时收到不同的响应

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM