通过c#webclient获取重定向http站点的源代码

本文关键字:站点 源代码 http 重定向 c#webclient 获取 通过 | 更新日期: 2023-09-27 18:29:15

我对某个网站有问题-我收到了产品ID号列表(大约2000),我的工作是从生产商网站获取数据。我已经尝试形成产品页面的url,但有一些未知的变量,我无法得到结果。然而,有搜索字段,所以我可以这样使用url:http://www.hansgrohe.de/suche.htm?searchtext=10117000&searchSubmit=Suchen-问题是,给定的页面显示信息(可能是java脚本),然后直接重定向到所需的页面-我需要从中提取数据。

有什么方法可以追踪这个重定向的事情吗?

我想放一些我的代码,但到目前为止,我发现所有的东西都没有帮助,因为它只是下载预注册页面的源代码。

public static string Download(string uri)
{
    WebClient client = new WebClient();
    client.Encoding = Encoding.UTF8;
    client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
    string s = client.DownloadString(uri);
    return s;
}

另外,在这种情况下,建议的答案也没有帮助,因为重定向并没有附带http请求——页面在加载几秒钟后被重定向http://www.hansgrohe.de/suche.htm?searchtext=10117000&searchSubmit=苏晨url

我刚刚找到了解决方案,由于我是新来的,我必须等几个小时才能回答我的问题,它会在那里结束:

我希望其他用户会觉得它很有用:{伪代码}

webBrowser1.Navigate('url');
while (webBrowser1.Url.AbsoluteUri != 'url')
{
// wait
}
String desiredUri = webBrowser1.Url.AbsoluteUri;

谢谢你的回答。

通过c#webclient获取重定向http站点的源代码

欢迎来到页面抓取的奇妙世界。简短的回答是"你不能那样做。"无论如何,在一般情况下都不会,当然WebClient也不会。问题似乎是某些Javascript执行重定向。由于WebClient所做的只是下载页面,它甚至不会下载Javascript。更不用说解析和执行了。

您可以通过创建一个使用WebBrowser类的程序来实现这一点。你可以让它加载页面。它应该进行重定向,然后您可以检查结果,该结果应该是您要查找的页面。我实际上还没有这么做,但这似乎是可能的。

您的另一个选择是启动Web浏览器的开发工具(如IE的F12开发工具),并观察发生了什么。然后,您可以检查正在执行的Javascript以及修改后的DOM,并查看重定向发生在哪里。

是的,这是一项乏味的工作。但是,一旦你确定了一个页面的重定向,你可能会自动生成其他页面的URL。