使用jsoup爬取网页资源(某东为例)
-
Jsoup是一款java版的HTML解析器,可直接解析某个URL地址、HTML文本内容。 解析网页后返回的是一个Document 对象实例,我们可以看到document中有很多类似js的方法 根据相应的标签找到对象的属性,最后输出我们需要的东西即可。
第一步加入依赖
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.15.1</version>
</dependency>
第二步,直接复制粘贴这个工具类即可
public static List<JD> getJD(String keyword) throws IOException {
List<JD> jds=new ArrayList<>();
String url="https://search.jd.com/Search?keyword="+keyword+"&enc=utf-8";
// 连接网页
Document document = Jsoup.connect(url).get();
// 获取id为J_goodsList的元素
Element element = document.getElementById("J_goodsList");
if (!ObjectUtils.isEmpty(element)) {
// 获取li标签所有的元素
Elements elements = element.getElementsByTag("li");
// 获取元素中的内容,这里的el就是每个li标签
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();
JD jd = new JD();
jd.setTitle(title);
jd.setPrice(price);
jd.setImg(img);
jds.add(jd);
}
}
return jds;
}
其中JD是创建的一个实体类,来接收爬取到的资源
@Data
@AllArgsConstructor
@NoArgsConstructor
public class JD {
private String title;
private String price;
private String img;
}
第三步测试
public static void main(String[] args) throws IOException {
getJD("笔记本电脑").forEach(System.out::println);
}
结果如下:
大家想要自定义爬取的内容,可以在工具类中设置参数,更多参数设置可以参考:
