昨天从狂神大佬那学习了如何用jsoup爬去网站数据,现在整理了一下给大家分享一下。
先创建一个名叫JsoupPojo的实体类用来装入数据。
@Data
public class JsoupPojo {
private String src;
private String name;
}
下面是将用来爬取的方法封装成了一个工具类
@Component
public class JsonUpUtil {
public ArrayList<JsoupPojo> JDJsonUP(String key) throws Exception{
ArrayList<JsoupPojo> list = new ArrayList<JsoupPojo>();
/*京东搜索地址*/
String keyword = "https://search.jd.com/Search?keyword="+key;
/*此步根据赋值给keyword的URL来获取页面dom*/
Document dom = Jsoup.parse(new URL(keyword),5000);
/* getElementById根据页面标签ID获取其中元素*/
Element goodsList = dom.getElementById("J_goodsList");
/* getElementsByTag根据页面标签获取其中元素*/
Elements li = goodsList.getElementsByTag("li");
for (Element l : li ){
/*循环获取到的J_goodsList下的li标签,从其中第1个img标签获取名叫data-lazy-img的元素*/
String img = l.getElementsByTag("img").eq(0).attr("data-lazy-img");
String name = l.getElementsByClass("p-price").eq(0).text();
JsoupPojo pojo = new JsoupPojo();
/* 塞入实体类*/
pojo.setSrc(img);
pojo.setName(name);
/*装入集合*/
list.add(pojo);
}
return list;
}
}
最后写一个测试类测试一下,结果爬去成功!