JAVA jsoup

#概述
jsoup是JAVA HTML 解析器
可以解析HTML
这样就不用自己写正则表达式了 再说我也不是很会写
下载
导入的方法我也写过了
#用法
##Document
首先先要新建个这个对象

    String url = "https://jsoup.org";
    Document document = Jsoup.connect(url).get();
    System.out.println(document);

这样就把url的全部html给打印出来了
比用httpClient方便很多,不过那个还是有个最强的维护session的功能,不知道这个由没有
当然了 也可以这么用

Document document = Jsoup.parse(html);

其中html就是html字符串
##.text()

System.out.println(document.text());

这么写 就可把文本解析出来
##element
HTML就是由一个一个element (元素)构成了
以前称tag(标签)

    Element element = document.getElementById();
    Elements elements = document.getElementsByClass();

一堆方法可以把需要的选出来 不再赘述

    element.attr();
    element.text();

这样选
还支持css选择器

element.select()

不再赘述
总之很好用 暂时不需要学正则表达式了

### Java Jsoup 常用方法及示例 #### 获取 HTML 文档 要使用 Jsoup 进行网络请求并解析 HTML 文档,可以调用 `connect` 方法来加载指定 URL 的页面内容。 ```java Document doc = Jsoup.connect("http://www.example.com").get(); ``` 此代码片段会发起 HTTP 请求到给定的 URL 并获取整个网页的内容作为 `Document` 对象[^2]。 #### 提取标题 一旦有了 `Document` 对象,就可以轻松提取页面中的特定元素。比如,通过 `title()` 函数可以直接获得网页的标题: ```java String title = doc.title(); System.out.println(title); ``` 这段代码将打印出所抓取页面的 `<title>` 标签内的文本[^4]。 #### 查找链接 为了遍历所有的超链接,可利用 CSS 选择器语法配合 `select` 方法找到所有带有 `a` 标记的节点,并进一步访问其属性如 href: ```java Elements links = doc.select("a[href]"); for (Element link : links) { System.out.println(link.attr("href")); } ``` 上述循环迭代了每一个符合条件的选择器匹配项,并输出它们对应的 URL 地址。 #### 处理图片资源 同样地,对于图像文件也可以采用相似的方式检索 src 属性值从而定位到每一张图的位置: ```java Elements images = doc.select("img[src]"); for (Element img : images) { String imageUrl = img.attr("abs:src"); // 使用 abs:src 可得到绝对路径形式的链接 System.out.println(imageUrl); } ``` 这里的 `abs:src` 是一种特殊的伪类表达式,它能自动转换相对路径为完整的 URI 形式。 #### 修改 DOM 结构 除了读取外,Jsoup 还允许修改已有的文档结构。例如更改某个标签内部的文字内容或是新增加某些子节点等操作均十分简便: ```java // 更改第一个 p 元素里的文字 doc.select("p").first().text("这是新的段落内容"); // 向 body 中追加一个新的 div 容器 Element newDiv = doc.body().appendElement("div"); newDiv.text("这是一个动态创建的新容器"); ``` 这些功能使得开发者可以在服务器端完成对原始 HTML 的预处理工作后再发送至客户端显示。 #### 错误处理机制 当遇到连接失败或其他异常情况时,应该适当加入错误捕获逻辑以确保程序健壮性: ```java try { Document doc = Jsoup.connect(url).timeout(5000).get(); } catch (IOException e) { System.err.println("无法连接到 " + url); } ``` 设置合理的超时时限有助于防止长时间等待无响应的情况发生。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值