人生有涯,学海无涯
简介
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
功能
- 从URL,文件或字符串中抓取并解析HTML
- 使用DOM遍历或CSS选择器查找和提取数据
- 处理HTML元素,属性和文本
- 根据安全的白名单清除用户提交的内容,以防止XSS攻击
- 输出整洁的HTML
jsoup旨在处理野外发现的所有各种HTML;从原始和验证到无效的标签汤;jsoup将创建一个明智的解析树。
有关下载,文档和示例,请参见jsoup.org。
包裹 | 描述 |
---|---|
org.jsoup | 包含主Jsoup 类,该主类提供对jsoup功能的方便的静态访问。 |
org.jsoup.examples | 包含示例程序和jsoup的用法。 |
org.jsoup.helper | 包含支持核心jsoup代码的类的软件包。 |
org.jsoup.internal | Jsoup使用的Util方法。 |
org.jsoup.nodes | HTML文档结构节点。 |
org.jsoup.parser | 包含HTML解析器,标签规范和HTML标记器。 |
org.jsoup.safety | 包含jsoup HTML清理程序和安全列表定义。 |
org.jsoup.select | 支持CSS样式元素选择器的软件包。 |
实战
一、新建一个项目,引入依赖
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.10.2</version>
</dependency>
二、我们以京东的搜索为例,我们搜索java关键字,查看一下页面的元素,如下:
三、demo实例
package com.example.demo.utils;
import com.example.demo.domain.Content;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
public class HtmlParseUtil {
public static void main(String[] args) throws IOException {
new HtmlParseUtil().parseJD("java").forEach(System.out::println);
}
/**
* 爬取网页数据
*/
public List<Content> parseJD(String keyWords) throws IOException {
String url = "https://search.jd.com/Search?keyword=" + keyWords;
Document document = Jsoup.connect(url).get();
Element element = document.getElementById("J_goodsList");
Elements elements = element.getElementsByTag("li");
ArrayList<Content> contents = new ArrayList<>();
for (Element el : elements) {
String img = el.getElementsByTag("img").eq(0).attr("data-lazy-img");
String price = el.getElementsByClass("p-price").eq(0).text();
String title = el.getElementsByClass("p-name").eq(0).text();
Content content = new Content();
content.setImg(img);
content.setTitle(title);
content.setPrice(price);
contents.add(content);
}
return contents;
}
}
package com.example.demo.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Content {
private String img;
private String title;
private String price;
}
四、测试结果:
版权声明:本文为jiang_wang01原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。