当前位置: 首页 > news >正文

Java:爬虫htmlunit抓取a标签

如果对htmlunit还不了解的话可以参考Java:爬虫htmlunit-CSDN博客

了解了htmlunit之后,我们再来学习如何在页面中抓取我们想要的数据,我们在学习初期可以找一些结构比较清晰的网站来做测试爬取,首先我们随意找个网站如下:

当我们打开网站F12,进入开发者模式,我们在学习之前我们需要知道我们要爬取什么数据,了解数据和页面的结构。就拿这个网站来说我们如果要爬取它的数据,首先需要获取他们的类别,在获取类别下的数据。那我们在点击类别的时候,需要分析下地址有没有变化,如果变化了,我们需要拿到指定类别的地址,然后和域名拼接成完整地址抓取其类目下的数据。

为什么要拼接呢?因为在网站类目使用的跳转,会自动加上站点地址;我们在爬取的时候是没有该网站域名的。

这个列子非常简单,我们直接要获取它的类别跳转的地址,再根据爬取的地址爬取其详情数据;

分析下来我们只要抓取该页面的a标签即可。这个在 htmlunit 中提供了 HtmlAnchor 直接可以获取所有的a标签,代码如下:

/*** <b>Function: </b> todo** @program: 根据页面信息获取子页面信息* @Package: com.kingbal.king.dmp* @author: dingcho* @date: 2024/06/13* @version: 1.0* @Copyright: 2024 www.kingbal.com Inc. All rights reserved.*/
@Slf4j
public class BaseTest {public static void main(String[] args) throws Exception {HtmlPage page = SpiderUtils.crawlPageWithoutAnalyseJs("https://www.yiyiwiy.com/");//System.err.println(page);List<HtmlAnchor> htmlAnchorList = page.getAnchors();log.info("htmlAnchorList.size() >>" + htmlAnchorList.size());log.info("********************");htmlAnchorList.forEach(f -> {if(f.getHrefAttribute().contains("vodtypehtml")){log.info(f.getHrefAttribute());}});log.info("********************");}}

我们抓取的是所有页面的a标签,所以我们需要过滤掉我们不需要的地址:

if(f.getHrefAttribute().contains("vodtypehtml")){log.info(f.getHrefAttribute());
}

然后执行代码,就可以获取到对应数据

http://www.lryc.cn/news/371818.html

相关文章:

  • 电池包断路单元DBU的预充电电阻应用案例
  • 车载网络安全指南 系统层面开发阶段(六)
  • Julia 文件读写
  • 为何总是会失败
  • 【PB案例学习笔记】-21小大写金额转换
  • 12.实战私有数据微调ChatGLM3
  • PHP地方门户分类信息网站源码讯客分类信息系统源码(含手机版)
  • 设计模式 —— 观察者模式
  • 光纤跳线(又称光纤连接器)的种类
  • 探索Ubuntu:从入门到精通
  • SpringMVC-基础架构
  • 《Windows API每日一练》4.1 GDI绘图
  • SQL Server 安装后,服务器再改名,造成名称不一致,查询并修改数据库服务器真实名称
  • 单例模式、工厂模式 c++关键字 static
  • 基于文本和图片输入的3D数字人化身生成技术解析
  • C语言 | Leetcode C语言题解之第150题逆波兰表达式求值
  • API安全性的重要性及实施策略
  • 现在Java行情不好可以转.net吗?
  • 大文件word生成的处理与解决策略
  • unity3d:GameFramework+xLua+Protobuf+lua-protobuf,与服务器交互收发协议
  • 二刷算法训练营Day30 | 回溯算法(6/6)
  • 【车载AI音视频电脑】200万像素迷你一体机
  • 齐普夫定律在循环神经网络中的语言模型的应用
  • 如何在Android Studio上发布Flutter应用
  • C++ 字符串处理4-根据指定的分隔符将字符串分割为多个子串根据指定的分隔符将多个子串连接成一个字符串
  • 微信小程序请求request封装
  • Web前端不挂科:深入探索与实战指南
  • Golang | Leetcode Golang题解之第149题直线上最多的点数
  • 京准电钟 NTP时间同步服务器助力水库水坝水利自动化建设
  • 程序员应该具备什么职业素养?