Автор оригинала: Pankaj Kumar.
Некоторое время назад я искал способ поиска в Google с помощью Java-программы. Я был удивлен, увидев, что у Google был API веб-поиска , но он давно устарел, и теперь нет стандартного способа достичь этого.
В основном поиск Google-это запрос HTTP GET, где параметр запроса является частью URL-адреса, и ранее мы видели, что для выполнения этого поиска существуют различные параметры, такие как Java HttpURLConnection или Apache HttpClient. Но проблема больше связана с анализом HTML-ответа и получением из него полезной информации. Вот почему я решил использовать jsoup, который является парсером HTML с открытым исходным кодом и способен извлекать HTML из заданного URL.
Итак, ниже приведена простая программа для извлечения результатов поиска Google в программе java, а затем их анализа, чтобы узнать результаты поиска.
package com.journaldev.jsoup;
import java.io.IOException;
import java.util.Scanner;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class GoogleSearchJava {
public static final String GOOGLE_SEARCH_URL = "https://www.google.com/search";
public static void main(String[] args) throws IOException {
//Taking search term input from console
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter the search term.");
String searchTerm = scanner.nextLine();
System.out.println("Please enter the number of results. Example: 5 10 20");
int num = scanner.nextInt();
scanner.close();
String searchURL = GOOGLE_SEARCH_URL + "?q="+searchTerm+"&num="+num;
//without proper User-Agent, we will get 403 error
Document doc = Jsoup.connect(searchURL).userAgent("Mozilla/5.0").get();
//below will print HTML data, save it to a file and open in browser to compare
//System.out.println(doc.html());
//If google search results HTML change the a");
for (Element result : results) {
String linkHref = result.attr("href");
String linkText = result.text();
System.out.println("Text::" + linkText + ", URL::" + linkHref.substring(6, linkHref.indexOf("&")));
}
}
}
Ниже приведен пример вывода из вышеуказанной программы, я сохранил данные HTML в файл и открыл в браузере, чтобы подтвердить вывод, и это то, что мы хотели. Сравните выходные данные с приведенным ниже изображением.
Please enter the search term. journaldev Please enter the number of results. Example: 5 10 20 20 Text::JournalDev, URL::=https://www.journaldev.com/ Text::Java Interview Questions, URL::=https://www.journaldev.com/java-interview-questions Text::Java design patterns, URL::=https://www.journaldev.com/tag/java-design-patterns Text::Tutorials, URL::=https://www.journaldev.com/tutorials Text::Java servlet, URL::=https://www.journaldev.com/tag/java-servlet Text::Spring Framework Tutorial ..., URL::=https://www.journaldev.com/2888/spring-tutorial-spring-core-tutorial Text::Java Design Patterns PDF ..., URL::=https://www.journaldev.com/6308/java-design-patterns-pdf-ebook-free-download-130-pages Text::Pankaj Kumar (@JournalDev) | Twitter, URL::=https://twitter.com/journaldev Text::JournalDev | Facebook, URL::=https://www.facebook.com/JournalDev Text::JournalDev - Chrome Web Store - Google, URL::=https://chrome.google.com/webstore/detail/journaldev/ckdhakodkbphniaehlpackbmhbgfmekf Text::Debian -- Details of package libsystemd-journal-dev in wheezy, URL::=https://packages.debian.org/wheezy/libsystemd-journal-dev Text::Debian -- Details of package libsystemd-journal-dev in wheezy ..., URL::=https://packages.debian.org/wheezy-backports/libsystemd-journal-dev Text::Debian -- Details of package libsystemd-journal-dev in sid, URL::=https://packages.debian.org/sid/libsystemd-journal-dev Text::Debian -- Details of package libsystemd-journal-dev in jessie, URL::=https://packages.debian.org/jessie/libsystemd-journal-dev Text::Ubuntu – Details of package libsystemd-journal-dev in trusty, URL::=https://packages.ubuntu.com/trusty/libsystemd-journal-dev Text::libsystemd-journal-dev : Utopic (14.10) : Ubuntu - Launchpad, URL::=https://launchpad.net/ubuntu/utopic/%2Bpackage/libsystemd-journal-dev Text::Debian -- Details of package libghc-libsystemd-journal-dev in jessie, URL::=https://packages.debian.org/jessie/libghc-libsystemd-journal-dev Text::Advertise on JournalDev | BuySellAds, URL::=https://buysellads.com/buy/detail/231824 Text::JournalDev | LinkedIn, URL::=https://www.linkedin.com/groups/JournalDev-6748558 Text::How to install libsystemd-journal-dev package in Ubuntu Trusty, URL::=https://www.howtoinstall.co/en/ubuntu/trusty/main/libsystemd-journal-dev/ Text::[global] auth supported = cephx ms bind ipv6 = true [mon] mon data ..., URL::=https://zooi.widodh.nl/ceph/ceph.conf Text::UbuntuUpdates - Package "libsystemd-journal-dev" (trusty 14.04), URL::=https://www.ubuntuupdates.org/libsystemd-journal-dev Text::[Journal]Dev'err - Cursus Honorum - Enjin, URL::=https://cursushonorum.enjin.com/holonet/m/23958869/viewthread/13220130-journaldeverr/post/last
Это все для поиска Google в программе Java, используйте ее осторожно, потому что, если с вашего компьютера поступит необычный трафик, скорее всего, Google заблокирует вас.