-5

我对某些站点有疑问 - 我获得了产品 ID 号列表(大约 2000),我的工作是从生产者站点提取数据。我已经尝试形成产品页面的 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=Suchen url

我刚刚找到了解决方案,而且由于我是新手,我必须等待几个小时才能回答我的问题,它最终会出现:

我希望其他用户会发现它有用:{pseudocode}

webBrowser1.Navigate('url');

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

感谢您的回答。

4

1 回答 1

1

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

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

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

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

于 2013-08-28T14:15:24.893 回答