Java下使用xpath解析html文件

来源:互联网 发布:淘宝改差评链接在哪里 编辑:程序博客网 时间:2024/04/28 10:13

这段时间一直在网络上扒取数据,为了方便就用到了xpath,一开始使用真的是挺难的,不过用用就好了,但是网上的资源少之又少,所以自己就写个博客把~~~

首先需要下载三个jar包  nekohtml.jar   xalan.jar   xerceslmpl.jar

在下面的这个文章中可以找自己想要的语法结构 

http://blog.csdn.net/dyoldfish/article/details/1774539

直接上代码

不好意思,这个文本编辑器实在是不好用,凑合着看~~

import org.apache.xpath.XPathAPI;import org.cyberneko.html.parsers.DOMParser;import org.w3c.dom.DOMException;import org.w3c.dom.Document;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.InputSource;public class Hxpath {DOMParser parser = new DOMParser();             try {                    //设置网页的默认编码                    parser.setProperty("http://cyberneko.org/html/properties/default-encoding","gb2312");                    parser.setFeature("http://xml.org/sax/features/namespaces", false);//可以修改获取页面的编码方式,在最后的那个参数                    BufferedReader in = new BufferedReader(new InputStreamReader(new URL("www.baidu.com").openStream(),"gb2312"));                    parser.parse(new InputSource(in)); in.close();                     } catch (Exception e) {                        e.printStackTrace();                      }                         Document doc = parser.getDocument();                         String productsXpath = "//UL/LI/A[@class='orange"; //xpath语句                          NodeList products; products = XPathAPI.selectNodeList(doc, productsXpath);                         String temp="";Node node = null;String p = "";                for (int i = 0; i < products.getLength(); i++) {                    node = products.item(i);temp=node.getTextContent().trim();                    System.out.println("i="+i+" "+temp);                }}
整个程序基本是这样的,在其中修改url值和xpath语法就可以分析html页面,如果是本地的html文件,没有试过,这个是直接从网络获取

//UL/LI/A[@class='orange"这句话的意思就是获取ul标签下的li标签下的a标签,并且a标签的class属性是orange的文本信息

//UL/LI/A/attribute::href  表示获取a标签的href属性
两个语句之间使用 | 可以匹配多个
html标签必须大写
如果还有其他问题就留言~~~感觉这个东西还算是很好用的~~~


                                             
0 0
原创粉丝点击