簡體   English   中英

用JSoup解析HTML

[英]Html parsing with JSoup

我正在嘗試解析以下URL的html:

http://ocw.mit.edu/courses/aeronautics-and-astronautics/16-050-thermal-energy-fall-2002/

獲得“ <p>”標簽的文本,其中包含講師的姓名。 所需的信息位於“ <p>”標簽內,但是我無法使用JSoup檢索標簽。 我不知道我在做什么錯,因為當我將標記保存在Element對象中時,將其稱為“ b”,然后調用b.getAllElements(),它不會顯示

作為要素之一。 這不是Jsoup的getAllElements()方法做什么嗎? 如果不能,請向我解釋我顯然缺少的層次結構,因為解析器無法找到

標簽,其中包含我需要的文本,在這種情況下為“ Prof. Zoltan Spakovszky”。

任何幫助將不勝感激。

public void getHomePageLinks()
{
    String html = "http://ocw.mit.edu/courses/aeronautics-and-astronautics/16-050-thermal-energy-fall-2002/";
    org.jsoup.nodes.Document doc = Jsoup.parse(html);

    Elements bodies = doc.select("body");

    for(Element body : bodies )
    {
        System.out.println(body.getAllElements());
    }

}

輸出為:

http://ocw.mit.edu/courses/aeronautics-and-astronautics/16-050-thermal-energy-fall-2002/

是否應該打印出文檔中body標簽內的所有元素?

我對JSoup一無所知,但是似乎如果您想使用講師​​的姓名,則可以使用以下方法進行訪問:

Element instructor = doc.select("div.chpstaff div p");

也許你已經解決了,但我已經努力了,所以無法抗拒提交

import java.io.IOException;
import java.util.logging.*;
import org.jsoup.*;
import org.jsoup.nodes.*;
import org.jsoup.select.*;
public class JavaApplication17 {

public static void main(String[] args) {

try {
   String url = "http://ocw.mit.edu/courses/aeronautics-and-astronautics/16-050-thermal-energy-   fall-2002/";
  Document doc = Jsoup.connect(url).get();
  Elements paragraphs = doc.select("p");
  for(Element p : paragraphs)
    System.out.println(p.text());

} 
catch (IOException ex) {
  Logger.getLogger(JavaApplication17.class.getName())
        .log(Level.SEVERE, null, ex);
   }
  }
}

is it what u meant?

這是一個簡短的示例:

// Connect to the website and parse it into a document
Document doc = Jsoup.connect("http://ocw.mit.edu/courses/aeronautics-and-astronautics/16-050-thermal-energy-fall-2002/").get();

// Select all elements you need (se below for documentation)
Elements elements = doc.select("div[class=chpstaff] p");

// Get the text of the first element
String instructor = elements.first().text();

// eg. print the result
System.out.println(instructor);

在這里查看jsoup選擇器api的文檔: Jsoup Codebook
它不是很難使用,但功能非常強大。

這是一個代碼

Document document = Jsoup.connect("http://ocw.mit.edu/courses/aeronautics-and-astronautics/16-050-thermal-energy-fall-2002/").get();

        Elements elements = document.select("p");
        System.out.println(elements.html());

您可以使用Jsoup的Selector屬性選擇所有標簽。 它將返回文本和標簽

        Elements ele=doc.select("p");
      ' String text=ele.text();
        System.out.println(text);

試試這個,我認為它會起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM