2011-09-22 3 views
9

Jsoupを使用してGoogleに検索を送信できますが、「Google検索」からリクエストを送信する代わりに、「I'm Feeling Lucky」を使用しますか?私は返されるサイトの名前を取得したいと思います。Jsoupはボタンプレスをシミュレートできますか?

フォームを送信する例はたくさんありますが、特定のボタンを指定して検索やフォームの送信を行う方法はありません。

Jsoupが機能しない場合はどうなりますか?

+0

JSONPを意味しますか? Googleの検索APIはhttp://code.google.com/apis/customsearch/v1/overview.html – ceejayoz

+0

@Ceejayoz:質問の下にある[[jsoup]タグの上にマウスを置くと、ポップアップが表示され、 * info *のリンクをご覧ください。 – BalusC

+0

@BalusC質問の内容とオールキャップの1文字で書かれたJSOUPを考慮すると、それは明確化のための十分な要求だったと思う。 – ceejayoz

答えて

11

(値は関係ありません):

http://www.google.com/search?hl=en&btnI=1&q=your+search+term

だから、これJsoupを行う必要があります。

String url = "http://www.google.com/search?hl=en&btnI=1&q=balusc"; 
Document document = Jsoup.connect(url).get(); 
System.out.println(document.title()); 

をしかし、これは403 (Forbidden)エラーが発生しました。

Exception in thread "main" java.io.IOException: 403 error loading URL http://www.google.com/search?hl=en&btnI=1&q=balusc 
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:387) 
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:364) 
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:143) 
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:132) 
    at test.Test.main(Test.java:17) 

おそらく、Googleがユーザーエージェントを盗聴し、Javaであることを発見していた可能性があります。 403は、Googleがボットとは必ずしも幸せではないことが表示され

BalusCコード

String url = "http://www.google.com/search?hl=en&btnI=1&q=balusc"; 
Document document = Jsoup.connect(url).userAgent("Mozilla").get(); 
System.out.println(document.title()); 

この利回り(予想通り):だから、私はそれを変更しましたそうですね。これを頻繁に行うと(一時的に)IP禁止を受ける可能性があります。

+0

ありがとうBalusC。それは問題に完全に答えました。そのURLリクエストがGoogleのサイトに固有のものであることがわかりました。私は、例としてGoogleを使って特定のボタンをクリックするようにJsoupを文字通りプログラムできるかどうかを調べようとしていました。私はこのサイトの私の他の質問で何をしようとしているのかを明確にします。その質問は一ヶ月以内に答えられていないし、最初の私に役立つことを望んで別の質問を尋ねたので、不満を持っていた。残念ながら、私の計画は逆行し、私は自分の問題を解決しない質問に答えるために時間をとってくれたことを謝罪します。 – Brian

0

はい、Googleの検索クエリの作成方法を理解できれば可能です。しかし、これで成功したとしても、これはGoogleによって許可されていません。自動検索クエリを作成するには、公式のAPIを使用する必要があります。

<input value="I'm Feeling Lucky" name="btnI" type="submit" onclick="..." /> 

それでは、クエリ文字列にbtnIパラメータを追加すると、実行する必要があります。http://google.comのHTMLソースによると、ボタンbtnIの名前を持っている「私は幸運を感じている」

http://code.google.com/intl/en-US/apis/customsearch/v1/overview.html

+0

お返事ありがとうございます。私は例としてGoogleを使用していただけです。私はJSOUPを使ってログインして情報を取得しようとしているサイトを持っています。私は実際にログインしているとは思っていません。実際にサイトにログインしていることを確認するために、「ログイン」または「送信」ボタンを押すことをシミュレートする方法を見つけようとしています。混乱させて申し訳ありません。 – Brian

2

私は、トラフをナビゲートするためのHtmlUnitと、掻き出しのためのJSOUPを試してみました。

+0

どうすればhtmlUnitとjSoupを組み合わせて使用​​できますか?編集:それを持って.. jSoup.parseはhtmlUnitによって与えられたhtml文字列を解析できます – tObi

関連する問題