Java程序如何实现Google搜索:API集成与示例详解

这是文章《Java程序示例中的Google搜索》的第1部分(共1部分)。

之前,我一直在寻找一种使用Java程序搜索Google的方法。令我惊讶的是,Google曾有一个网络搜索API,但它早已被弃用,现在没有标准的方法来实现这一功能。基本上,Google搜索是一个HTTP GET请求,查询参数是URL的一部分。我们之前可以使用不同的选项,比如Java的HttpUrlConnection或Apache HttpClient来执行这次搜索。但问题更多地在于如何解析HTML响应并从中获取有用信息。这就是我选择使用Jsoup的原因,它是一个开源的HTML解析器,能够从给定的URL获取HTML。因此,下面是一个在Java程序中获取Google搜索结果并解析结果的简单程序。

package com.Olivia.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 {
		// 从控制台获取搜索词输入
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入搜索词。");
		String searchTerm = scanner.nextLine();
		System.out.println("请输入结果数量。例如:5 10 20");
		int num = scanner.nextInt();
		scanner.close();
		
		String searchURL = GOOGLE_SEARCH_URL + "?q="+searchTerm+"&num="+num;
		// 如果没有正确的User-Agent,我们将收到403错误
		Document doc = Jsoup.connect(searchURL).userAgent("Mozilla/5.0").get();
		
		// 以下将打印HTML数据,将其保存到文件并在浏览器中打开以进行比较
		//System.out.println(doc.html());
		
		// 如果Google搜索结果的HTML将<h3 class="r"更改为<h3 class="r1"
		// 我们需要相应地更改以下内容
		Elements results = doc.select("h3.r > a");

		for (Element result : results) {
			String linkHref = result.attr("href");
			String linkText = result.text();
			System.out.println("文本::" + linkText + ", URL::" + linkHref.substring(6, linkHref.indexOf("&")));
		}
	}

}

以下是上述程序的样本输出。我将HTML数据保存在文件中并在浏览器中打开以确认输出结果,它正是我们所期望的。请将输出结果与下方图片进行比较。

请输入搜索词。
scdev
请输入结果数量。例如:5 10 20
20
文本::JournalDev, URL::=https://www.scdev.com/
文本::Java Interview Questions, URL::=https://www.scdev.com/java-interview-questions
文本::Java design patterns, URL::=https://www.scdev.com/tag/java-design-patterns
文本::Tutorials, URL::=https://www.scdev.com/tutorials
文本::Java servlet, URL::=https://www.scdev.com/tag/java-servlet
文本::Spring Framework Tutorial ..., URL::=https://www.scdev.com/2888/spring-tutorial-spring-core-tutorial
文本::Java Design Patterns PDF ..., URL::=https://www.scdev.com/6308/java-design-patterns-pdf-ebook-free-download-130-pages
文本::Pankaj Kumar (@JournalDev) | Twitter, URL::=https://twitter.com/scdev
文本::JournalDev | Facebook, URL::=https://www.facebook.com/JournalDev
文本::JournalDev - Chrome Web Store - Google, URL::=https://chrome.google.com/webstore/detail/scdev/ckdhakodkbphniaehlpackbmhbgfmekf
文本::Debian -- Details of package libsystemd-journal-dev in wheezy, URL::=https://packages.debian.org/wheezy/libsystemd-journal-dev
文本::Debian -- Details of package libsystemd-journal-dev in wheezy ..., URL::=https://packages.debian.org/wheezy-backports/libsystemd-journal-dev
文本::Debian -- Details of package libsystemd-journal-dev in sid, URL::=https://packages.debian.org/sid/libsystemd-journal-dev
文本::Debian -- Details of package libsystemd-journal-dev in jessie, URL::=https://packages.debian.org/jessie/libsystemd-journal-dev
文本::Ubuntu – Details of package libsystemd-journal-dev in trusty, URL::=https://packages.ubuntu.com/trusty/libsystemd-journal-dev
文本::libsystemd-journal-dev : Utopic (14.10) : Ubuntu - Launchpad, URL::=https://launchpad.net/ubuntu/utopic/%2Bpackage/libsystemd-journal-dev
文本::Debian -- Details of package libghc-libsystemd-journal-dev in jessie, URL::=https://packages.debian.org/jessie/libghc-libsystemd-journal-dev
文本::Advertise on JournalDev | BuySellAds, URL::=https://buysellads.com/buy/detail/231824
文本::JournalDev | LinkedIn, URL::=https://www.linkedin.com/groups/JournalDev-6748558
文本::How to install libsystemd-journal-dev package in Ubuntu Trusty, URL::=https://www.howtoinstall.co/en/ubuntu/trusty/main/libsystemd-journal-dev/
文本::[global] auth supported = cephx ms bind ipv6 = true [mon] mon data ..., URL::=https://zooi.widodh.nl/ceph/ceph.conf
文本::UbuntuUpdates - Package "libsystemd-journal-dev" (trusty 14.04), URL::=https://www.ubuntuupdates.org/libsystemd-journal-dev
文本::[Journal]Dev'err - Cursus Honorum - Enjin, URL::=https://cursushonorum.enjin.com/holonet/m/23958869/viewthread/13220130-scdeverr/post/last

以上就是关于在Java程序中进行Google搜索的全部内容。请谨慎使用,因为如果你的计算机出现异常流量,很有可能被Google封锁。

bannerAds