jsoup

jsoup

解析url

package Jsoup;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.junit.Test;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
public class JsoupTest {
    @Test
    public void testUrl() throws IOException {
        Document doc = Jsoup.parse(new URL("http://www.baidu.com"), 3000);
        Elements title1 = doc.getElementsByTag("link");
        for (Element e:title1
             ) {
            System.out.println(e);
        }
    }
}
//输出
<link rel="dns-prefetch" href="//dss1.bdstatic.com">
<link rel="dns-prefetch" href="//ss1.bdstatic.com">
<link rel="dns-prefetch" href="//sp0.baidu.com">
<link rel="dns-prefetch" href="//sp1.baidu.com">
<link rel="dns-prefetch" href="//sp2.baidu.com">

解析字符串

    @Test
    public void testString() throws Exception{
        //获取字符串.由html组成的txt文本。
        String s = FileUtils.readFileToString(new File("C:\\Users\\DELL\\Desktop\\demo.txt"), "utf-8");
        //解析字符串
        Document doc = Jsoup.parse(s);
        Elements title = doc.getElementsByTag("title");
        System.out.println(title);

    }
}
//输出
<title>百度一下,你就知道</title>

解析文件

   @Test
    public void testFile() throws Exception{
        Document document = Jsoup.parse(new File("C:\\Users\\DELL\\Desktop\\demo.txt"), "utf8");
        Elements title = document.getElementsByTag("title");
        System.out.println(title);
    }

使用DOM方式遍历文档

获取Element 最常用的四种方式

  1. 根据id getElementById

  2. 根据tag getElementsByTag

    <h1>,<title>,<li>,开头的标签类型。

    class不可以。

  3. 根据 class getElementsByClass

    如class=“bar”

  4. 根据attribute获取元素 getElementsByAttribute

    如class,等以及自己命名的属性

    li,h1不可以,这是tag,不是属性。

由Element获取数据

  1. 获取id
  2. 获取className
  3. 获取attribute以及attributes
  4. 获取text
    @Test
    public void testTraverse() throws Exception {
        Document document = Jsoup.parse(new File("C:\\Users\\DELL\\Desktop\\demo.html"), "utf-8");
        Element element = document.getElementById("lili");
        System.out.println(element);
        System.out.println(element.id());
        System.out.println(element.className());
        System.out.println(element.text());
        System.out.println(element.attr("class"));
        element.attributes().forEach(s->{
            System.out.println(s);
        });
    }
//
element
<li id="lili" class="class_a class_b"> 
    <a href="http://www.baidu.com" target="_blank"> 
    	<span class="s_name"> 内径 
        </span> 
     </a> 
</li>
//id();    
lili
//className()
class_a class_b
//text()
内径
//attr(key,val)    
class_a class_b
//attributes()
id="lili"
class="class_a class_b"

selector选择器

如document.select(String cssQuery)

document.select(Evaluator evaluator)

参数:

  1. tagname

    如span,li,h2

  2. #id

    #187

  3. .class

    .class_a

  4. [attribute]

    [abc]

  5. [attr=value]

  @Test
    public void testTraverse() throws Exception {
        Document document = Jsoup.parse(new File("C:\\Users\\DELL\\Desktop\\demo.html"), "utf-8");
        System.out.println(document.select("h1"));//tagname
        System.out.println(document.select("#lili"));//#id
        System.out.println(document.select(".class_a"));//.class
        System.out.println(document.select("[food=187]"));//[attr] or [attr=val]
    }
}

组合使用

  1. tagname#id
  2. tagname.class
  3. tagname[attr]
  4. 以上任意组合
  5. ancestor child:查询某个元素下子元素
  6. parent>chid:查询某个元素下直接子元素
  7. parent>*:查询某个元素下所有直接子元素

获取内径,

document.select("li#lili span.a_name")

在这里插入图片描述

html原码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-cn">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title>网页标题</title>
    <meta name="keywords" content="关键字列表" />
    <meta name="description" content="网页描述" />
    <link rel="stylesheet" type="text/css" href="" />
    <style type="text/css"></style>
    <script type="text/javascript"></script>
</head>


<body>
<h2    align="center" class="class_a class_b">PHP介绍</h2>
<h2    align="center" food="187">PHP介绍2</h2>
<h2    align="center" class="class_a ">PHP介绍3</h2>
<h3><i><b>PHP未来和发展趋势:</b></i></h3>
<ol>
    <li>我就买了一<font    color="red">5000</font>个账号,全国各省市的房建、市政、公路、园<font    color="red">60%</font>林、水利、土地整理</li>
    <li>什么叫关联? 难<b><u>42</u></b>%不成我建一张<b><u>13%</b></u>表格后,所有与此工艺<b><u>24%</b></u>相关的表格</li>
    <li>批量勾选关联或<b><u>80%以上</u></b>表格生成实例工程,然后规划一下验收部位,再</li>
    <li>批量勾选关联或表格生成实例工程,然后规划一下验收部位,再</li>
</ol>
<hr border="2"    color="#330000"/>
<h1 id="test"><b><i>PHP灵活的高效性实现了各种终端和平台的互联网应用</i></b></h1>
<ol>
    <li>备份导出工程文件、模板文件,连关联、个人设置啥都行。</li>
    <li>备份导出工程文件、模板文件,连关联、个人设置啥都行。</li>
    <li>备份导出工程文件、模板文件,连关联、个人设置啥都行。</li>
    <li>备份导出工程文件、模板文件,连关联、个人设置啥都行。</li>
</ol>
<p>  示例随机数、<u>混凝土强度自动计算</u><u>工程概况自动填写</u><u>表格编辑</u><u>公式录入</u>, 这么Low的功能早就有了,资料软件必备的,还用介绍吗?批量勾选关联或表格生成实例工程,然后规划一下验收部位,再点击生成……等……等……等……完成了??? 那我还做什么?哦,打印机得去开电源了。咦,难不成其它单位工程也可以用这个实例规划生成? 爽爆了!示例随机数、混凝土强度自动计算、工程概况自动填写、表格编辑、公式录入, 这么Low的功能早就有了,<font color="red"    size="5"><u><b><i>资料软件必备的,还用介绍吗</i></b></u></font></p>
<hr border="2"    color="#330000"/>
<h2 id="1"><b>PHP就业现状</b></h2>
<h2 id="2"><b>PHP就业现状</b></h2>
<p>  批量勾选关联或表格生成实例工程,然后规划一下验收部位,再点击生成……等……等……等……完成了??? 那我还做什么?哦,打印机得去开电源了。咦,难不成其它单位工程也可以用这个实例规划生成? 爽爆了!批量勾选关联或表格生成实例工程,然后规划一下验收部位,再点击生成……等……等……等……完成了??? 那我还做什么?哦,打印机得去开电源了。咦,难不成其它单位工程也可以用这个实例规划生成? 爽爆了!</p>
<hr border="2"    color="#330000"/>

<h1>今天你要去哪里?</h1>
<ul>
    <li><u><font color="#0000ff">新浪</font></u><br/>
    什么叫关联? 难不成我建一张表格后,所有与此工艺相关的表格都会自动建立?
</ul>
<ul>
    <li><u><font color="#0000ff">百度</font></u><br/>
    什么叫关联? 难不成我建一张表格后,所有与此工艺相关的表格都会自动建立?
</ul>
<ul>
    <li><u><font color="#ff15ff">网易</font></u><br/>
    什么叫关联? 难不成我建一张表格后,所有与此工艺相关的表格都会自动建立?
</ul>
<ul>
<li><b><font size="6">去我页面看看:</font></b></li>
</ul>
<ol>
    <li id="lili" class="class_a class_b">
        <a href="http://www.baidu.com" target="_blank">
            <span class="a_name">
                内径
            </span>
        </a>
        <a href="http://www.baidu" target="_blank">
            <span class="b_name">
                内径s
            </span>
        </a>
    </li>
    <li><u><font color="#0000ff">page2</font></u> &lt表格都会自动建立&gt</li>
    <li><u><font color="#0000ff">page3</font></u> &lt表格都会自动建立&gt</li>
    <li><u><font color="#0000ff">page4</font></u> &lt表格都会自动建立&gt</li>
    <li> color="#0000ff">page5 &lt表格都会自动建立&gt</li>
</ol>
<hr border="2"    color="#330000"/>
</body>



</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值