2

これを使用してウェブサイトに移動します

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

次に、ナビゲートされたWebサイトのURLが必要です...どうすれば取得できますか?

4

4 に答える 4

1

HtmlWeb.ResponseUriリクエストに実際に応答したインターネット リソースの URI を取得するプロパティを使用できます。

例 - 「クッキー」のグーグル:

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

ここで注意すべき点が 2 つあります。まず、上記の URL で「www」なしで「http://google.com 」を使用すると、「 http://www.google.com 」への 301 リダイレクトが強制されるため、単純にするために www を含める必要があります。

2 つ目は、(www を含む) URL を開くと 302 リダイレクトが実行されることです。宛先は応答ヘッダー内にあります。したがって、その 302 応答をキャッチできれば、Google が送信する URL を、Google が送信する前に取得できます。

Google が www ドメインへの 301 リダイレクトを実行する最初のリクエストのレスポンス ヘッダーとリクエスト ヘッダーを次に示します。

応答ヘッダー
Cache-Control public, max-age=2592000
Content-Length 244
Content-Type text/html; charset=UTF-8
Date Mon, 18 Feb 2013 14:14:40 GMT
Expires Wed, 20 Mar 2013 14:14:40 GMT
Location http://www.google.com/search?btnI=1&q=html5
Server 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
接続キープアライブ
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
Host google.com
User-Agent Mozilla/5.0 (Windows NT 6.2; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0

そして、宛先ページに移動する 302 の応答/要求ヘッダー。宛先 URL が返されていることがわかります。コピーで太字にしました。

応答ヘッダー
Cache-Control プライベート
Content-Length 231
Content-Type text/html; charset=UTF-8
Date 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
接続キープアライブ
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
Host www.google.com
User-Agent Mozilla/5.0 (Windows NT 6.2; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0

于 2013-02-18T14:23:48.633 に答える
0

Sam1 は、1 つまたは 2 つのインスタンスの試みに対して正しい答えを提供したようです (私は HTML Agility Pack を実際に使用した経験はありません)。

keywordsそうは言っても、上位の結果 (つまり、「I'm Feeling Lucky」の結果) を取得できるように、Google を使用して多数の呼び出しを行う場合は、 Google の Custom Search API ( https ://developers.google.com/custom-search/v1/overview )。

この API を使用して JSON の結果を取得する場合、使用する帯域幅は大幅に少なくなります。

API を使用すると、1 日あたり 100 件の無料クエリのみが許可されます。これはアプリケーションの要件に当てはまる場合もありますが、そうでない場合もあります。何千ものクエリを作成する場合は、お金を払って Google をサポートすることをお勧めします。

于 2013-02-18T14:20:37.413 に答える