java爬虫抓取网页数据(Java网络爬虫系列文章之采集虎扑列表新闻(图))

优采云 发布时间: 2022-04-10 03:01

  java爬虫抓取网页数据(Java网络爬虫系列文章之采集虎扑列表新闻(图))

  这是Java网络爬虫系列的第一篇文章。如果您不了解Java网络爬虫系列文章,请参考学习Java网络爬虫所需的基础知识。第一篇是关于Java网络爬虫的介绍。在本文中,我们以 采集hupu 列表新闻的新闻标题和详情页为例。需要提取的内容如下图所示:

  

  我们需要提取图中圈出的文字及其对应的链接。在提取过程中,我们会使用两种方法进行提取,一种是Jsoup方法,另一种是httpclient+正则表达式方法。它们也是Java网络爬虫常用的两种方法。这两种方法你不懂也没关系。后面会有相应的说明书。在正式写解压程序之前,先解释一下Java爬虫系列博文的环境。本系列博文中的所有demo都是使用SpringBoot搭建的。无论使用哪种环境,只需要正确导入对应的包即可。

  通过 Jsoup 提取信息

  我们先用Jsoup来提取新闻信息。如果你还不了解 Jsoup,请参考

  首先创建一个Springboot项目,名称可选,在pom.xml中引入Jsoup的依赖

  

org.jsoup

jsoup

1.12.1

  好,我们一起来分析一下页面,想必你还没有浏览过,点击这里浏览虎扑新闻。在列表页面中,我们使用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 标签

// 霍华德:夏休期内曾节食30天,这考验了我的身心

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 = "https://voice.hupu.com/nba";

CrawlerBase crawlerBase = new CrawlerBase();

crawlerBase.jsoupList(url);

}

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

  

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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线