0

Googleクエリボックスで次を検索したい:

http://www.cmu.edu/silicon-valley/ faculty directory

残念ながら、次のコードは機能しません。

Jsoup.connect("http://www.google.com/search?hl=en&q=http%3A%%2F%%2F%www.cmu.edu%2F%silicon-valley%2F%20faculty20directory").get();

これもそうではありません:

Jsoup.connect("http://www.google.com/search?hl=en&q=http%3A%%2F%%2F%www.cmu.edu%2F%silicon-valley%2F%20faculty20or20directory").get();

ここで何が欠けていますか?

編集:動作しないということは、ブラウザから見たときに Google が結果を返さなかったことを意味します。

Jsoup.connect("http://www.google.com/search?hl=en&q=http%3A%"%2F%%2F%www.cmu.edu%2F%silicon-valley%2F%20faculty").get();

ただし、上記のコードは機能します。グーグル " " と同等http://www.cmu.edu/silicon-valley/ facultyです。

編集:私のプログラムには次のトリックがあるので、ボットルールは問題ではありません:

.userAgent("Mozilla")
4

1 に答える 1

3

Jsoup.connect("http://www.google.com/search?hl=en&q=http%3A%2F%2Fwww.cmu.edu%2Fsilicon-valley%2F+faculty+directory")Google forbis ロボットがその結果にアクセスするため、403 エラー (禁止) が発生します。

変更したい場合は、ユーザー エージェント文字列を変更する必要があります。

doc = Jsoup.connect("http://www.google.com/search?hl=en&q=http%3A%2F%2Fwww.cmu.edu%2Fsilicon-valley%2F+faculty+directory").header("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17").get()期待どおりに動作するはずですが、Google の利用規約に違反する可能性があります。

于 2013-01-22T10:26:50.313 に答える