最近再写一个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()方法可以将其转化为一个标准的链接地址。这里的内容并不多,其实主要就是照着这样的方法去写就行了,挺简单的,结果就不打印了。