jsoup网业爬虫
依赖添加
<!-- jsoup HTML parser library @
官网地址:https://jsoup.org/
以下版本需要jdk1.8以上的版本支撑 -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.1</version>
</dependency>
创建实体类存储解析的数据
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TestEntity {
private String img;
private String price;
private String name;
private String shopNum;
}
基本数据读取
public static void test1() throws IOException {
String url="";
//从url加载html
Document document = Jsoup.connect(url).get();
//获取html的标题
String title = document.title();
//获取head信息
Element head = document.head();
//获取body信息
Element body = document.body();
//通过指定的id获取元素内的所有元素
Element element = document.getElementById("J_goodsList");
System.out.println(element.html());
//获取所有的li标签
Elements lis = element.getElementsByTag("li");
List<TestEntity> list = new ArrayList<>();
TestEntity entity = null;
//所有的数据读取基本都和javascript一致
for (Element on: lis) {
//获取li标签中的元素
//一般情况下图片会用到懒加载,如果使用src取不到则使用data-lazy-img进行读取
String img = on.getElementsByTag("img").eq(0).attr("data-lazy-img");
//获取书籍价格
String price = on.getElementsByClass("p-price").eq(0).text();
//获取书籍名称
String name = on.getElementsByClass("p-name").eq(0).text();
//获取出版社
String shopNum = on.getElementsByClass("p-shopnum").eq(0).text();
entity = new TestEntity(img,price,name,shopNum);
list.add(entity);
}
list.forEach(System.out::println);
}