之前写过两篇关于Jsoup爬取数据的博客(①Jsoup解析HTML页面数据(又扒到1万+的数据) ② Android之Jsoup解析Html抓包其他网站数据
),但是还是有人看不懂,再次写一个案例,这次注释的非常详细;
先看要抓取的数据图片:
;
下面直接是代码了,代码中注释很详细,相信大家应该能看得懂
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements;/**
-
@author zml2015
-
@Time:2016年11月8日 下午9:04:23
-
@version 1.0
*/
public class CollectPets {
public static void main(String[] args) {
try {
Document html = Jsoup.connect("http://www.qichongwang.com/")
.timeout(1000000).get();//timeout里面的值我写的大,是怕出现链接超时
// 所有注释对应着网页查看(检查元素)
Elements div_content = html.select(".tabCont");// 首先拿到类名为tabCont的div里的所有数据Elements uls = div_content.select("ul");// 然后拿到div中所有的ul标签,由页面可以看到前三个ul标签分别对应着“①狗狗推荐”“②猫猫推荐”“③小宠推荐” Element dog = uls.get(0);// ①狗狗推荐 Element cat = uls.get(1);// ②猫猫推荐 Element otherPets = uls.get(2);// ③小宠推荐 Elements dog_as = dog.select("a");// 获得狗狗推荐的详情链接 Elements dog_imgs = dog.select("img");// 获得狗狗推荐的图片<img>标签 Elements cat_as = cat.select("a");// 获得猫咪推荐的详情链接 Elements cat_imgs = cat.select("img");// 获得猫咪推荐的图片<img>标签 Elements otherPets_as = otherPets.select("a");// 获得小宠推荐的详情链接 Elements otherPets_imgs = otherPets.select("img");// 获得小宠推荐的图片<img>标签 for (int i = 0; i < dog_as.size(); i++) { String dog_detail_url = dog_as.attr("href");// 拿到<a>标签中href的值 String dog_img = dog_imgs.get(i) .attr("src", dog_imgs.get(i).attr("abs:src"))// ①将<img>标签中的src的相对路径转换为绝对路径 .attr("src");// ②然后拿到src的值 String cat_detail_url = cat_as.attr("href");// 拿到<a>标签中href的值 String cat_img = cat_imgs.get(i) .attr("src", cat_imgs.get(i).attr("abs:src"))// ①将<img>标签中的src的相对路径转换为绝对路径 .attr("src");// ②然后拿到src的值 String otherPets_detail_url = otherPets_as.attr("href");// 拿到<a>标签中href的值 String otherPets_img = otherPets_imgs.get(i) .attr("src", otherPets_imgs.get(i).attr("abs:src"))// ①将<img>标签中的src的相对路径转换为绝对路径 .attr("src");// ②然后拿到src的值 System.out.println("狗狗推荐的图片地址:" + dog_img); System.out.println("狗狗推荐的详情地址:" + dog_detail_url); System.out.println("猫咪推荐的图片地址:" + cat_img); System.out.println("猫咪推荐的详情地址:" + cat_detail_url); System.out.println("小宠推荐的图片地址:" + otherPets_img); System.out.println("小宠推荐的详情地址:" + otherPets_detail_url); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }
}
}
输出结果:
Q.E.D.