Получение информации о том, существуют ли результаты поиска Google или нет (JAVA)
Я пытаюсь разобрать Google для результатов поиска. Мне нужны не сами результаты поиска, а информация о том, существует ли результат поиска или нет!
Теперь моя проблема в том, что я хочу искать комбинированные строки. Например, "Max Testperson". Теперь Google действительно хорош и говорит мне: мы не смогли найти результаты поиска для "Max Testperson", но вместо этого для Max Testperson. Но!!! Мне не нужен Max Testperson, мне нужен "Max Testperson".
Так что, в основном, я не заинтересован в самих результатах поиска, а в части перед результатами поиска (может ли строка поиска быть найдена или нет!).
Я использовал следующий учебник в Java: http://mph-web.de/web-scraping-with-java-top-10-google-search-results/
С этим я могу разобрать результаты поиска. Но как я и сказал! Нет необходимости в этом! Я просто хочу знать, существует ли моя строка поиска или нет. Так как Google удаляет ->" "<- я все равно получаю результаты поиска.
Кто-нибудь может мне помочь с этим?
1 ответ
Попробуйте добавить параметр get nfpr=1
к вашему поиску, чтобы отключить функцию автокоррекции:
final Document doc = Jsoup.connect("https://google.com/search?q=test"+"&nfpr=1").userAgent(USER_AGENT).get();
Обновить:
Вы могли бы разобрать сообщение о безрезультатности:
public class App {
public static final String USER_AGENT = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36";
public static void main(String[] args) throws Exception {
String searchTerm = "\"daniel+nasseh\"+\"26.02.1987\"";
boolean hasExactResults = true;
final Document doc = Jsoup.connect("https://google.com/search?q=" + searchTerm + "&nfpr=1")
.userAgent(USER_AGENT).get();
Elements noResultMessage = doc.select("div.e.obp div.med:first-child");
if (!noResultMessage.isEmpty()) {
hasExactResults = false;
for (Element result : noResultMessage) {
System.out.println(result.text());
}
}
if (hasExactResults) {
// Traverse the results
for (Element result : doc.select("h3.r a")) {
final String title = result.text();
final String url = result.attr("href");
System.out.println(title + " -> " + url);
}
}
}
}
Обновление 2: лучшее решение, представленное самим Донсельмом в комментариях, - добавить &tbs=li:1
форсировать поиск по точному поисковому запросу
String searchTerm = "\"daniel+nasseh\"+\"26.02.1987\"";
final Document doc = Jsoup.connect("https://google.com/search?q=" + searchTerm + "&tbs=li:1").userAgent(USER_AGENT).get();