使用Jsoup提取HTML节点

时间:2013-08-27 05:18:45

标签: html-parsing web-crawler jsoup extract html-content-extraction

这是html代码:

<!DOCTYPE html>
<html>
<title>Instructor's Page</title>

<body>

<h1>Instructor's Page</h1>


<div class="check1">    <div id="check2">
<span id="check3" class="check4"> <strong class="check5"><link href="http://schema.org/t"/>Instructor-1 name</strong>
</span>
</div>

<div class="check1">    <div id="check2">
<span id="check3" class="check4"> <strong class="check6">Instructor-2 name</strong>
</span>

</body>
</html>

我对Jsoup很新。如何从给定的html页面中提取Instructor's name

目前,我知道只打印标题。

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.File;
import java.io.IOException;


public class crawl {
    public static void main(String[] args) {
        Document doc1;

        try {


            File input = new File("t.html");
            doc1 = Jsoup.parse(input, "UTF-8");
        // get page title

            String title1 = doc1.title();
            System.out.println("title : " + title1);


        } catch (IOException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
    }
}

1 个答案:

答案 0 :(得分:0)

使用select - 方法在所需的HTML页面中选择这些元素。 它需要一个模式作为您要选择的对象的参数,例如具有特定id或类的特定标记。

//Creates a collection of Element objects for all span tags
Elements names = doc.select("span");

//Returns a collection of the first cells of each row
Elements names = doc.select("td:eq(0)");

使用此选项可选择您要查找的内容。使用Web浏览器中的工具可以帮助您识别HTML源代码中的标记。

关于如何选择教师姓名的原始问题,请参阅下文。


如果HTML的结构总是相同,并且您确定教师名称将位于span - 标记内,那么您只需解析

中的文本
    Elements names = doc.select("span");
    for (Element e : names) {
        System.out.println("Name is: " + e.text());
    }

将打印出来

Name is: Instructor-1 name
Name is: Instructor-2 name