使用Jsoup解析网页

本文介绍了如何使用Jsoup库解析HTML,包括下载Jsoup、解析网页以获取图片下载地址、图片列表页面及分页链接。通过实例展示了获取图片名、下载图片的完整流程,详细解析了实现步骤和代码实现。
摘要由CSDN通过智能技术生成


之前已经发表过一篇使用HtmlParser类来解析视频网站的教程

http://blog.csdn.net/gfd54gd5f46/article/details/54960538


我发现htmlparser类太旧了,而且用起来语法也不清晰。

所以我又找来一个更强大的解析网页的工具类:Jsoup 来帮助我们制作更强大的网络爬虫


下载Jsoup类


      jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。


Jar包地址:

http://jsoup.org/packages/jsoup-1.8.1.jar

构建Maven项目自动下载jar包:

http://blog.csdn.net/gfd54gd5f46/article/details/54973954

Jsoup在线API文档:

http://tool.oschina.net/apidocs/apidoc?api=jsoup-1.6.3

Jsoup开发指南:

http://www.open-open.com/jsoup/attributes-text-html.htm

解析网页


我这里就找一个图片网站来进行测试

http://www.nipic.com/index.html


1、获取单张图片的下载地址
  • 随便点击一张首页的图片

1



进去之后我们发现这个页面只是图片的列表,我们要获取的是单个图片的地址,所以还需要点击进去查找

2



点击第一张图片,查看到了单张图片

3



同样,我们要对这个页面进行分析,找到规律来获取这张图片的地址链接

F12进入调试页面

(调试页地址:http://www.nipic.com/show/16519633.html



观察规律发现:

  • 图片的下载地址在src属性下

  • 图片有个唯一的id属性:J_worksImg

4



找到规律后,我们就来使用Jsoup来获取一下图片的下载地址

  • 代码实现:
    /**
     * 通过子页面链接(图片网页)获取到图片下载地址
     * "http://www.nipic.com/show/16519633.html"
     * @return downloadPicUrl
     */
    public static List<String>  getPicDownUrlFromAllPicPage(String url) {
        //保存图片的下载地址
        List<String> list = new ArrayList<String>();
        try {
            //通过传入一个url打开一个链接并且获取内容,将内容存到文件中
            Document doc = Jsoup.connect(url).get();
            //如果文档不为空    &&    页面中没有出现  “唔,未找到任何页面!!!” 则认为该页面是个正常页面
            if (doc != null && !Jsoup.connect(url).get().html().contains("唔,未找到任何页面!!!")) {
                //获取到网页的唯一的id元素
                Element element = doc.getElementById("J_worksImg");
                //判断元素不为空 && src里面的内容不为空
                if (element != null && !element.attr("src").equals("")) {
                    //将图片地址添加到集合中
                    list.add(element.attr("src"));
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        //http://pic120.nipic.com/file/20170114/958400_203916268000_2.jpg
        return list;
    }



Main方法()

public static void 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值