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

C# 使用HttpClient和浏览器时收到的不同响应,c#,httpclient,C#,Httpclient,我试图刮nse网站,但当我尝试使用这种方法 static async void DownloadPageAsync(string url) { HttpClient client = new HttpClient(); client.DefaultRequestHeaders.TryAddWithoutValidation("Accept", "text/html,application/xhtml+xml,application/xml");

我试图刮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爬虫的更多信息的详细信息。换言之,不要这样做,但要让它更花哨一些——即使由于浏览器检测而需要“Gecko”,也应该在“(“…”)之间放置一些东西

众所周知,在网络爬虫程序中很难处理的一件事是AJAX调用。有一个不正确的用户代理甚至可能使情况变得更糟,一些网站根据浏览器的功能决定是否使用AJAX。在这个问题的上下文中,最好简单地假设您无法在爬虫程序中正确处理Javascript或AJAX(尽管事实是要复杂得多,在这里描述可能需要很长时间…)


了解一些股票网站,我想这也是你的问题。这些数字经常使用AJAX“实时”刷新。

您是否尝试过在一个html文件中处理您的响应,然后在浏览器中查看它?我怀疑它是否有效。到目前为止,在你的帖子中没有任何迹象表明返回到你的代码和浏览器中的HTML有任何不同。请澄清您有什么问题。@Alexei他们没有什么不同,但为什么在浏览器中我看到的是值,但在其页面源代码中我看到的与代码中的值完全相同???@AshokRathod这样做了,不起作用..寻找一个名为Fiddler的实用程序。。。它允许您在浏览器中执行操作时嗅探发送和接收的内容。它还将为您生成C#。您可能会看到使用AJAX的后续调用。
client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0");