webclient或httpwebrequest来检索href和url

时间:2013-05-30 12:44:05

标签: c# httpwebrequest screen-scraping webclient

如何使用webclient或httpwebrequest做两件事:

1)使用以下命令将资源下载为字符串后说:

 var result = x.DownloadString("http://randomsite.com);

有一个相对网址(也是查询字符串):

<a href="/q?name=john&age=50">Click here to get your name and age</a>

如何使用webclient点击(关注)该链接?最初在结果中加载资源后。我能够使用htmlagilitypack来隔离href,但我现在想在代码中遵循它。

2)如果httpwebrequest没有重定向,而是使用不同的参数加载相同的页面,我将如何使用webclient检索生成的新URL? 即如果我打电话

var result = x.DownloadString("http://randomsite.com);

但实际上这叫

http://randomsite.com/q?site=default

然后我要检索第二个网址

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以通过链接和刚下载的链接构建网址,如下所示:

Uri baseUri = new Uri("http://randomsite.com");
Uri myUri = new Uri(baseUri, "/q?name=john&age=50");

Console.WriteLine(myUri.ToString()); // gives you http://randomsite.com/q?name=john&age=50

如果你的网址是url,那么这也有效。

至于第二个问题,我猜你的意思是请求被重定向,而你想要那个网址呢?然后,最简单的方法是将WebClient描述为here

Uri baseUri = new Uri("http://randomsite.com");
using(var client=new WebClient())
{
  var result = client.DownloadString(myUri);
  //get href via HtmlAgilityPack...
  Uri myUri = new Uri(baseUri, "/q?name=john&age=50");
  result = client.DownloadString(myUri);
}