html根据Xpath取得内容的java实现

最近再写一个android音乐播放器应用,因为需要获得歌手的头像图片,在没有找到合适的获取歌手信息API的情况下,打算直接用百度百科中的歌手头像来实现。这里也就是利用Xpath来获取歌手图片的链接地址了。

这里直接通过一个实例来演示一下如何去实现:

首先在百度中输入地址:"http://www.baidu.com/swd=%周杰伦"可以打开歌手的百度搜索首页,然后一开始的就是百度百科的头像。


然后通过审查图片的元素,可以得到图片资源的Xpath,也就是该链接地址在该Html中的地址,这里得到的是:"//*[@id="1"]/div[1]/div[1]/a/img",得到Xpath之后,就可以通过将该html下载下来,然后通过解析获得想要的内容。

public void parseHTML() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    HttpClient httpClient = new DefaultHttpClient();
                    HttpGet httpGet = new HttpGet("http://www.baidu.com/s?wd=" + "周杰伦");
                    HttpResponse httpResponse = httpClient.execute(httpGet);

                    HttpEntity entity = httpResponse.getEntity();
                    String response = EntityUtils.toString(entity);

                    TagNode tagNode = new HtmlCleaner().clean(response);
                    org.w3c.dom.Document doc = new DomSerializer(new CleanerProperties()).createDOM(tagNode);
                    XPath xpath = XPathFactory.newInstance().newXPath();
                    String str = (String) xpath.evaluate("//*[@id=\"1\"]/div[1]/div[1]/a/img/attribute::src", doc, XPathConstants.STRING);
                    String url = android.text.Html.fromHtml(str).toString();
                    System.out.println(url);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
这里是先通过HttpClient下载所要访问的Html资源,然后将其下载下来,在通过HtmlCleaner将html网页转化为标准格式的XML文件。这是HtmlCleaner的官网:http://htmlcleaner.sourceforge.net/,在这里你可以下载HtmlCleaner的Jar包,将其导入即可,官网也有使用的文档教程。再接下来通过Xpath的解析方法,将其解析即可,这里的Xpath我将其补充具体到了链接地址了: //*[@id=\"1\"]/div[1]/div[1]/a/img/attribute::src,解析出来后,由于是html的链接地址,里面可能含有一些非链接符号的转义字符等等,所以通过 android.text.Html.fromHtml(str).toString()方法可以将其转化为一个标准的链接地址。这里的内容并不多,其实主要就是照着这样的方法去写就行了,挺简单的,结果就不打印了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值