2

我用它导航到一个网站

doc = web.Load("http://google.com/search?btnI=1&q=[my keyword]") //I'm Feeling Lucky

然后我需要导航网站的网址......我怎样才能得到它?

4

4 回答 4

1

您可以使用HtmlWeb.ResponseUri获取实际响应请求的 Internet 资源的 URI 的属性。

一个例子 - 谷歌搜索“cookies”:

var web = new HtmlWeb();
var doc = web.Load("http://google.com/search?btnI=1&q=cookies");
var responseUrl = web.ResponseUri;

得到http://en.wikipedia.org/wiki/HTTP_cookie.

于 2013-02-18T14:51:59.657 回答
0

您可以通过以下方式获取当前浏览器的 url:

string url = HttpContext.Current.Request.Url.AbsoluteUri;
于 2013-02-18T14:04:58.660 回答
0

看起来 Sam1 可能已经为您提供了一个或两个实例尝试的正确答案(我对 HTML Agility Pack 没有真正的经验)。

话虽这么说,如果您打算使用 Google 进行大量调用keywords以便检索最高结果(即“我感觉很幸运”结果),那么我强烈建议您使用 Google 的自定义搜索 API(https ://developers.google.com/custom-search/v1/overview)。

如果您使用此 API 提取 JSON 结果,它将使用更少的带宽。

API 的使用只允许每天 100 次免费查询。这可能符合您的应用程序要求,但也可能不符合。如果您有能力,如果您打算进行数千次查询,我建议您通过付费来支持 Google。

于 2013-02-18T14:20:37.413 回答
0

这里有两点需要注意。首先 -在没有“www”的上述 URL 中使用“ http://google.com ”会强制 301 重定向到“ http://www.google.com ”,因此您应该包含 www 以保持简单。

第二个是打开 URL(带有 www)执行 302 重定向。目标位于响应标头内。因此,如果您能捕捉到该 302 响应,您就可以在 Google 将您发送到那里之前获取该 URL。

这是第一个请求的响应和请求标头,其中 Google 执行 301 重定向到 www 域。

响应头
Cache-Control public, max-age=2592000
Content-Length 244
Content-Type text/html; charset=UTF-8
日期 2013 年 2 月 18 日星期一 14:14:40 GMT
到期 2013 年 3 月 20 日星期三 14:14:40 GMT
位置 http://www.google.com/search?btnI=1&q=html5
服务器 gws
X -Frame-Options SAMEORIGIN
X-XSS-Protection 1;模式=块

请求标头
Accept text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Connection keep-alive
Cookie PREF =ID=5d01155d00a8d706:U=49fab5927df1f8ad:FF=0:TM=1359732743:LM=1360874099:S=byw-1-fgfbcRWdPN; NID = 67 = NpFNjRkjTFtyrcYPE-pQeJiMFEgWMWdyVMVpbYATZySlsw63Hz4FCw2Tcr4tynhAhyq1vnuPqmdFBOC65Nd-048ZxrgP_HVtKbVCe7psi-G2aMvsOUbiBl1xYks2xK2K
DNT 1个
主机google.com
用户代理的Mozilla / 5.0(Windows NT的6.2; WOW64; RV:18.0)壁虎/ 20100101火狐/ 18.0

以及将我带到目标页面的 302 的响应/请求标头。您可以看到返回的目标 URL。我在副本中加粗了它。

响应头
Cache-Control private
Content-Length 231
Content-Type text/html; charset=UTF-8
日期 Mon, 18 Feb 2013 14:14:41 GMT
Location http://en.wikipedia.org/wiki/HTML5
服务器 gws
X-Frame-Options SAMEORIGIN
X-XSS-Protection 1; 模式=块

请求标头
Accept text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Connection keep-alive
Cookie PREF =ID=5d01155d00a8d706:U=49fab5927df1f8ad:FF=0:TM=1359732743:LM=1360874099:S=byw-1-fgfbcRWdPN; NID = 67 = NpFNjRkjTFtyrcYPE-pQeJiMFEgWMWdyVMVpbYATZySlsw63Hz4FCw2Tcr4tynhAhyq1vnuPqmdFBOC65Nd-048ZxrgP_HVtKbVCe7psi-G2aMvsOUbiBl1xYks2xK2K
DNT 1个
主机www.google.com
用户代理的Mozilla / 5.0(Windows NT的6.2; WOW64; RV:18.0)壁虎/ 20100101火狐/ 18.0

于 2013-02-18T14:23:48.633 回答