Может ли Jsoup имитировать нажатие кнопки?

можете ли вы использовать Jsoup для отправки поиска в Google, но вместо отправки запроса через " поиск Google "используйте"мне повезло"? Я хотел бы захватить имя сайта, который будет возвращен.

Я вижу много примеров отправки форм, но никогда не могу указать конкретную кнопку для выполнения поиска или отправки формы.

Если Jsoup не будет работать, что будет?

3 ответов


согласно HTML-источнику http://google.com кнопка "Я чувствую себя счастливым" имеет имя btnI:

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

Итак, просто добавив btnI параметр строки запроса должен делать (значение не имеет значения):

http://www.google.com/search?hl=en&btnI=1&q=your + поиск + срок

Итак, этот 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 (доступ запрещен) ошибка.

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. Итак, я изменил его:

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());

это дает (как и ожидалось):

В BalusC Код

403, однако, указывает на то, что Google не обязательно доволен такими ботами. Вы можете получить (временно) IP-запрет, когда вы делаете это слишком часто.


Я бы попробовал HtmlUnit для навигации по сайту и JSOUP для очистки


Да, это возможно, если вы можете выяснить, как выполняются поисковые запросы Google. Но это не разрешено Google, даже если вы добьетесь успеха с этим. Вы должны использовать их официальный API для создания автоматических поисковых запросов.

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