1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 利用Java Jsoup实现简单的网络爬虫

利用Java Jsoup实现简单的网络爬虫

时间:2020-09-24 21:52:59

相关推荐

利用Java Jsoup实现简单的网络爬虫

我们以采集虎扑列表新闻的新闻标题和详情页为例,需要提取的内容如下图所示:

我们需要提取图中圈出来的文字及其对应的链接,在提取的过程中,我们可以使用两种方式来提取,一种是 Jsoup 的方式,另一种是 httpclient + 正则表达式的方式,这也是 Java 网络爬虫常用的两种方式,你不了解这两种方式没关系,后面会有相应的使用手册。在正式编写提取程序之前,我先交代一下 Java 爬虫系列博文的环境,该系列博文所有的 demo 都是使用 SpringBoot 搭建的,不管你使用哪种环境,只需要正确的导入相应的包即可。

本文介绍的是Jsoup 的方式

Jsoup 方式提取信息

我们使用 Jsoup 的方式提取新闻信息,如果你还不知道 Jsoup ,请参考 /

先建立一个 Springboot 项目,名字就随意啦,在 pom.xml 中引入 Jsoup 的依赖

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.12.1</version></dependency>

好了,接下来我们一起分析页面吧,想必你还没浏览过吧,点击这里浏览虎扑新闻。在列表页中,我们利用 F12 审查元素查看页面结构,经过我们分析发现列表新闻在

标签下,每一条新闻都是一个li标签,分析结果如下图所示:

由于我们前面已经知道了 css 选择器,我们结合浏览器的 Copy 功能,编写出我们 a标签的 css 选择器代码:div.news-list > ul > li > div.list-hd > h4 > a ,一切都准备好了,我们一起来编写 Jsoup 方式提取信息的代码:

/*** jsoup方式 获取虎扑新闻列表页* @param url 虎扑新闻列表页url*/public void jsoupList(String url){try {Document document = Jsoup.connect(url).get();// 使用 css选择器 提取列表新闻 a 标签// <a href="/nba/2484553.html" target="_blank">霍华德:夏休期内曾节食30天,这考验了我的身心</a>Elements elements = document.select("div.news-list > ul > li > div.list-hd > h4 > a");for (Element element:elements){//System.out.println(element);// 获取详情页链接String d_url = element.attr("href");// 获取标题String title = element.ownText();System.out.println("详情页链接:"+d_url+" ,详情页标题:"+title);}} catch (IOException e) {e.printStackTrace();}}

使用 Jsoup 方式提取还是非常简单的,就5、6行代码就完成了,关于更多 Jsoup 如何提取节点信息的方法可以参考 jsoup 的官网教程。我们编写 main 方法,来执行 jsoupList 方法,看看 jsoupList 方法是否正确。

public static void main(String[] args) {String url = "/nba";CrawlerBase crawlerBase = new CrawlerBase();crawlerBase.jsoupList(url);}

执行 main 方法,得到如下结果:

从结果中可以看出,我们已经正确的提取到了我们想要的信息,如果你想采集详情页的信息,只需要编写一个采集详情页的方法,在方法中提取详情页相应的节点信息,然后将列表页提取的链接传入提取详情页方法即可。

本文有参考博主平头哥,想进一步学习可 关注此博主

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。