使用Java采集Google搜索结果

article/2025/11/9 23:15:02

使用 Java Web 抓取谷歌搜索结果

微信搜索关注《Java学研大本营》,加入读者群,分享更多精彩

介绍

Java被列为最古老和最受欢迎的编程语言之一。它的受欢迎程度从它在超过 10 亿台安卓设备上运行这一事实就可以看出。

它也是最强大的多线程语言之一,可用于执行各种任务。它可以完成的有用任务之一是网页抓取。

网页抓取是从网站或其他来源提取或收集数据并以所需格式存储的过程。它用于各种任务,例如数据挖掘、价格监控、潜在客户生成、搜索引擎优化等。企业可以使用抓取的数据做出明智的决策并获取有关其目标市场的信息。

在此博客中,我们将学习如何使用 Java 及其库抓取 Google 搜索结果。

为什么用 Java 来抓取 Google?

Java 是一种非常易于初学者理解的语言。可用于 Java 的社区支持也很大,这可以帮助您在编写爬虫程序时面对任何错误。

您可以通过在 Reddit 和 Discord 中的大型社区提问来解决您的错误。

Java 是一门强大的语言,在其高性能能力的支持下,它可以成为抓取 Google 的一个不错的选择。

使用 Java 抓取谷歌搜索结果

在此博客中,我们将设计一个基于 Java 的脚本来抓取前 10 个 Google 搜索结果。输出将由相应结果的链接、标题、描述和位置组成。此数据可用于各种目的,如 SEO、媒体监控、广告验证等。

谷歌搜索结果抓取分为两部分:

  1. 通过对目标 URL 发出 HTTP 请求来提取 HTML 数据。

  2. 解析 HTML 以获取所需的数据。

要求:

许多 Java 库可用于抓取 Google 搜索结果,但在本教程中,我们将使用:

  1. Jsoup — 它是一个 Java 库,可用于提取和解析 HTML。

设置:

创建一个文件夹并使用您想要的名称和 .java 扩展名保存文件。如果您还没有安装 Java,可以通过阅读以下文章进行安装:

  1. 如何在 Windows 上安装 Java?https://www.windows11.dev/ce7in/java-55a9

  2. 如何在 MacOS 上安装 Java?https://www.geeksforgeeks.org/how-to-install-java-on-macos/

过程:

所以,我们已经建立了我们的 Java 项目来抓取谷歌。我们现在将使用 Jsoup 通过将此 URL 作为参数传递来与 Google 网页建立连接:

https://www.google.com/search?q=Java&gl=us

您可以在 URL 中选择任何查询和位置。

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;import java.io.IOException;public class GoogleScraper {public static void main(String[] args) throws IOException {String googleUrl = "https://www.google.com/search?q=java&gl=us";// Connect to the Google search pageDocument doc = Jsoup.connect(googleUrl).userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36").get();// Document object represents the HTML dom (Talking about "doc" here)

分步说明:

  1. 首先,我们从jsoup库和Java io包中导入了所有需要的类。

  2. 声明类和主要方法后,我们初始化了我们的 Google URL。

  3. 之后,我们在 JSOUP 的连接方法的帮助下使用 URL 和用户代理与 Google 网页建立连接。然后我们借助get方法提取 HTML 数据并将其存储在文档数据类型中。

User-Agent用于识别请求用户代理的应用程序、操作系统、供应商和版本,这可以避免假冒真实用户访问 Google。

这将帮助我们提取原始 HTML 代码。然后我们将在 select 方法的帮助下解析这个 HTML。

让我们首先确定我们必须从 HTML 中选择的标签以获取所需的数据。

如果您检查 HTML,您会发现每个结果都包含在类名为g的“ div”容器中。

我们现在将选择所有类名为g的div 。

Elements results = doc.select("div.g");

select() — 它用于从 HTML 或 XML 文档中选择匹配的元素。

然后,我们将遍历这些选定的div。

     int c = 0;for (Element result : results) {// Extract the title and link of the resultString title = result.select("h3").text();String link = result.select(".yuRUbf > a").attr("href");String snippet = result.select(".VwiC3b").text();System.out.println("Title: " + title);System.out.println("Link: " + link);System.out.println("Snippet: " + snippet);System.out.println("Position: "+ (c+1));System.out.println("\n");c++;}

您可以在g.div下找到标题、片段和链接的标签。让我们检查 HTML,以便找到它们。

从图像中,您可以说标题的标签是h3,链接是.yuRUbf > a,片段是.VwiC3b。

成功运行代码后,您的结果应如下所示:

Title: Java | Oracle
Link: https://www.java.com/
Snippet: Get Java for desktop applications. Download Java · What is Java? Uninstall help. Happy Java User. Are you a software developer looking for JDK downloads?
Position: 1Title: Java Downloads | Oracle
Link: https://www.oracle.com/java/technologies/downloads/
Snippet: The JDK includes tools for developing and testing programs written in the Java programming language and running on the Java platform. Linux; macOS; Windows.
Position: 2Title: Java - Wikipedia
Link: https://en.wikipedia.org/wiki/Java
Snippet: Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of ...
Position: 3

但是如果你用这种方法,谷歌可能会很容易地封锁你的IP。您可以通过为每个请求使用随机用户代理来在某种程度上避免这种情况。让我告诉你,你如何做到这一点:

  1. 初始化一组用户代理:

String userAgents[] =  {"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36",}

2.然后在0到数组长度之间选择一个随机数。

int rnd = ( int )( Math.random ()*userAgents.length);
  1. 然后在抓取HTML的时候传过去就可以了。

Document doc = Jsoup.connect(googleUrl).userAgent(userAgents[rnd]).get();

因此,这就是您如何准备一个基本脚本来使用 Java 抓取 Google 搜索结果的方法。

如果您正在寻找更精简且免维护的解决方案,那么您可以考虑使用我们的Google 搜索 API来抓取 Google 搜索结果。

抓取谷歌搜索结果的优势

抓取 Google 搜索结果可以为您带来很多好处:

  1. SERP 监控——它可以用来监控网站在谷歌上的排名,这可以帮助你提高网站在市场上的知名度。

  2. 可扩展——抓取谷歌搜索结果让您可以毫无障碍地收集大量数据,这些数据可用于各种目的,如潜在客户生成、市场趋势分析等。

  3. 价格监控——它可以用来收集你的竞争对手或在线零售商销售的产品的价格,以保持市场竞争力。

  4. Lead Generation——它可以用来收集潜在客户的电子邮件地址。

  5. 访问实时数据——它使您能够访问最新数据,因为 Google 搜索结果会经常更新。

  6. 便宜——抓取谷歌搜索结果是一个非常划算的选择,而不是使用大多数企业负担不起的官方 API。

为什么官方 Google 搜索 API 不是更好的选择?

企业不使用官方Google Search API的原因有以下几个:

  1. 负担不起——他们的 API 对于 1k 请求的定价为 5 美元,这对大多数企业来说是负担不起的。对于预算紧张的人来说,这是不可行的。

  2. 访问受限——API 仅提供有限数量的数据,这就是人们考虑市场上可用的爬虫的原因,它直接从网页中提取 HTML,让他们完全控制结果。

  3. 复杂设置——对于没有任何编码知识的用户来说,Google Search API 的设置非常复杂。

结论

在本教程中,我们学习了使用 Java 抓取 Google 搜索结果。谢谢阅读!

推荐书单

《项目驱动零起点学Java》

《项目驱动零起点学Java》共分 13 章,围绕 6 个项目和 258 个代码示例,分别介绍了走进Java 的世界、变量与数据类型、运算符、流程控制、方法、数组、面向对象、异常、常用类、集合、I/O流、多线程、网络编程相关内容。《项目驱动零起点学Java》总结了马士兵老师从事Java培训十余年来经受了市场检验的教研成果,通过6 个项目以及每章的示例和习题,可以帮助读者快速掌握Java 编程的语法以及算法实现。扫描每章提供的二维码可观看相应章节内容的视频讲解。

《项目驱动零起点学Java》贯穿6个完整项目,经过作者多年教学经验提炼而得,项目从小到大、从短到长,可以让读者在练习项目的过程中,快速掌握一系列知识点。

马士兵,马士兵教育创始人,毕业于清华大学,著名IT讲师,所讲课程广受欢迎,学生遍布全球大厂,擅长用简单的语言讲授复杂的问题,擅长项目驱动知识的综合学习。马士兵教育获得在线教育“名课堂”奖、“最受欢迎机构”奖。

赵珊珊,从事多年一线开发,曾为国税、地税税务系统工作。拥有7年一线教学经验,多年线上、线下教育的积累沉淀,培养学员数万名,讲解细致,脉络清晰。

《项目驱动零起点学Java》(马士兵,赵珊珊)【摘要 书评 试读】- 京东图书京东JD.COM图书频道为您提供《项目驱动零起点学Java》在线选购,本书作者:,出版社:清华大学出版社。买图书,到京东。网购图书,享受最低优惠折扣!icon-default.png?t=N4P3https://item.jd.com/13607758.html

精彩回顾

部署Spring Boot应用程序

Java Spring Boot 3.0.0 RC1 震撼登场!

微信搜索关注《Java学研大本营》

访问【IT今日热榜】,发现每日技术热点


http://chatgpt.dhexx.cn/article/wn62Eo2o.shtml

相关文章

计算机毕业设计之java+springboot基于vue的学生成绩管理系统

项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时…

(Java毕业设计)学生成绩管理系统(基于java+springboot)

您好!我是岛上程序猿,感谢您阅读本文,欢迎一键三连哦。 开发环境 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本&#…

学生成绩管理系统(Java)

目录 ​编辑 需求分析: 登录界面(LoginPanel) 主界面(MainApp) 重写 1.班级重写(cs.practics.bean.BjBean.java) 2.课程重写(cs.practics.bean.CourseBean.java) 3.成绩重写(cs.practics.bean.MarkBean.java) 4.学生重写(cs.practics.bean.StudentBean.java…

Linux两台服务器之间直接传输文件和文件件

Linux两台服务器之间直接传输文件和文件夹 今天遇到一个需求,因公司有四台服务器,在老服务器上有一个音频文件夹大约为5个G大小,现在要拷贝到另外一台服务器上。 如果把文件夹打包下载到本地,再上传到目标服务器上,感…

FTP连接树莓派(Linux)进行文件传输

1. 在Linux上安装和启动FTP服务 在使用FTP功能之前,树莓派需要安装FTP Server,请输入以下命令安装vsftpd sudo apt-get install vsftpd 使用以下命令启动FTP服务 sudo service vsftpd start 2. 在主机上下载FlashFXP 然后按照如下方式配置&#xff1…

Linux学习(2)——传输文件

承接上一篇,这一篇文章也是基于《Linux从入门到精通》 何明编著 中国水利水电出版社 这本书写的,在写这篇文章的时候也查阅了一些相关资料,也自己动手实践了一下,不得不说,这本书讲得实在是通俗易懂,只要愿…

【Linux】基于TCP实现的大型文件(超过2G)传输项目——总结

文章目录 【1】实现的功能【2】项目框架【3】源代码【4】运行截图 【1】实现的功能 文件的上传、下载(包括超过2G的大文件)、断点续传、秒传、删除等等。 【2】项目框架 整个项目是在Linux环境下用C语言开发的,基于TCP协议,采用…

两台linux之间传输文件的方法

scp传输 当两台Linux主机之间要互传文件时可使用SCP命令来实现 scp传输速度较慢,但使用ssh通道保证了传输的安全性 复制文件 将本地文件拷贝到远程 scp 文件名 –用户名计算机IP或者计算机名称:远程路径 从远程将文件拷回本地 scp –用户名计算机IP或者计算机名称:文件名 …

Linux实现两台机器文件互传(SCP命令)

文章目录 SCP命令的注意事项下载文件和目录上传文件和目录 SCP命令的注意事项 scp命令的主要作用是实现Linux与Linux系统之间的文件传输 SCP传输要求: 两台计算机都的操作系统都必须是Linux操作系统SCP命令是基于SSH协议,所以两台服务器的sshd服务必须…

Linux这么在两个服务器直接传文件?

文章目录 概念1.当从一个远程服务器传输文件到另一个服务器上(你想传给别人文件)2.在本地服务器,从另一个服务器中获取文件(你想从别人获取文件)总结 概念 scp是secure copy的简写, 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。scp 是加密…

快速实现两台Linux系统之间的传输文件

文章目录 前言一、ssh协议介绍1、什么是ssh协议?2、ssh协议使用介绍3、scp指令使用介绍 二、实验步骤1、安装虚拟机,分别安装linux2、开启ssh协议3、查看ip地址4、文件传输 总结 前言 最近开始用linux做实验啦,实现了用ssh协议的两个liunx系统…

两台Linux系统之间传输文件的几种方法

scp传输 当两台LINUX主机之间要互传文件时可使用SCP命令来实现 scp传输速度较慢,但使用ssh通道保证了传输的安全性 复制文件 将本地文件拷贝到远程 scp 文件名 –用户名计算机IP或者计算机名称:远程路径 从远程将文件拷回本地 scp –用户名计算机IP或者计算机名称:文件名 …

Linux之两个Linux服务器之间互传文件

1.当从一个Linxu服务器传输文件到另一个服务器上 现在有128和129两个文件夹,128服务其中有m文件夹以及其中对应的文件 128服务器 129服务器(没有m文件夹及其中文件) 把aaa.java文件传输到129的opt目录下 //scp 文件名称 root服务器ip&…

Linux(传输层二继续讲TCP)

文章目录 0. 前言1. 流量控制2. 滑动窗口2-1 基础2-2 重传 3. 拥塞控制4. 延迟应答5. 捎带应答6. 面向字节流7. 粘包问题8. TCP异常情况9. TCP小结10. 基于TCP应用层协议11. TCP/UDP对比 0. 前言 上一章我们主讲了TCP,本章我们继续 链接:https://blog.csdn.net/Din…

Linux(传输层二)

文章目录 0. 前言1. TCP协议1-1 TCP协议段格式1. TCP如何解包?2. TCP协议如何交付(应用层- - 客户)?3. 如何理解报文本身?4. 如何理解报文字段? 1-2 确认应答(ACK)机制1-3 超时重传机制1-4 连接管理机制1. …

两台linux服务器之间传输文件的几种方法

打开powershell, 开始连接服务器 ssh root192.168.7.204 然后输入密码后就进来了,进入之后找到你要传输文件的位置 接下来我要将这个包传到另一个环境中去,有以下几种方法 scp 示例: 将本地服务器的文件传向另一个服务器 wget 【用法】 wget是…

操作:FTP服务器的搭建

实验目的: 掌握FTP服务器的配置方法、掌握FTP配置基于虚拟用户的服务器搭建方法 实验要求: 以学号和姓名为虚拟用户的FTP服务器搭建实现利用不同虚拟用户登录FTP服务器实现不同用户的权限控制 实验步骤: 一、 搭建一台FTP服务器&#xf…

虚拟机上CentOS 7 架设ftp服务器 最新版系统超详细!!

被这玩意弄的死去活来,搞了这么长时间终于通了。。。看了很多教程感觉说的都不错,但对像我这样的菜鸟还是不够照顾啊。。。还是觉得自己写一篇入门级的更好一些,也希望能方便大家! 我们假定此时CentOS刚刚在虚拟机上安装好&#…

办公室服务器安装系统,教你如何架设办公室FTP服务器以Serv-U为例

Scrv-U是Windows平台上最流行的FTP服务器软件,可以从官方网站下载,也可以从其他软件下载网站下载。下面,脚本之家小编就以现在局域网中最流行的FTP服务器软件Serv-U为例,向您讲解一下如何架设FTP服务器。 [1]下载并准备安装Serv-U…

Serv-U 15 架设FTP文件服务器 图文教程

 轉自solar的博客:无心阁 solar 转自:http://blog.163.com/zoulei154126/blog/static/4645500220093831019355/ FTP:意思就是:文件传输协议。说白了,就是提供一个服务,让网上的人&#xff…