快速导航

Jsoup解析网页

Jsoup 2017/02/21 13:02

从一个URL解析HTML

String url="http://www.baidu.com";
Document doc=Jsoup.connect(url).get();  //解析的结果是一个文档对象

Document doc=Jsoup.parse(html);   //创建一个干净的解析结果,无论HTML格式是否完整

设置参数链接

Document doc=Jsoup.connect(url)
            .data("query","java")           //请求参数
            .userAgent("jsoup")             //设置User-Agent
            .cookie("auth","token")         //设置cookie
            .timeout(3000)                  //设置连接超时时间
            .post();                        //使用POST方式访问URL

获取网页标题

String title=doc.title();         //获取网页标题

获取网页中的链接

Elements link=doc.select("a[href]");        //获取带有href属性的a标签
Elements link=doc.select("a[name~=th]");    //获取a标签中的name属性带有“th”的链接
/*完整例子*/
String url="http://www.baidu.com";
Document doc=Jsoup.connect(url),get();      
Elements links=doc.select("a[href]");         //获取带有href属性的a标签
for(Elements link : links){                   //遍历每个链接
    String linkHref=link.attr("href");          //得到href属性的值,即URL地址
    String linkText=link.text();                //获取链接文本
    System.out.println(linkText+" "+linkHref);  //输出链接文本及地址
}

利用Dom获取数据

Element content=doc.getElementById("sh");       //通过id获取对应的元素
Elements links=content.getElementsByTag("a");   //通过标签获取元素
for(Element link : links){              
    String linkHref=link.attr("href");
    String linkText=link.text();
}

获取class为Wrapper的Div区域的内容

Element content=doc.select("div.Wrapper").first();

根据id获取内容

Element content=doc.select("#set").first();

去掉注释

”<!– –>“是网页中的注释标签。注释是节点,用节点名#comment标识

removeComments(doc);
System.out.print(doc.html)
public static void removeComments(Node node){
    for(int i=0;i<node.childNodes().size();i++){
        Node child=node.childNode(i);
        if(child.nodeName().equals("#comment")){
            child.remove();
        }else {
            removeComments(child);
        }
    }
}
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

Powered by codetiler.com