簡體   English   中英

使用Jsoup在Java中進行HTML解析

[英]Html parsing in Java using Jsoup

我一直在使用Jsoup進行HTML解析,但是遇到了一個大問題。 大約需要1個小時。

這是我正在解析的網站。

<tr>
    <td class="class1">value1 </td>
    <td class="class1">value2</td>
    <td class="class1">value3</td>
    <td class="class1">value4</td>
    <td class="class1">value5 </td>
    <td class="class1">value6</td>
    <td class="class1">value7</td>
    <td class="class1">value8</td>
    <td class="class1">value9</td>
</tr>

在站點中,有成千上萬個這樣的表,我需要將它們全部解析為一個列表。 我只需要value1和value6,所以要使用此代碼。

Document doc = Jsoup.connect(url).get();
            ls = new LinkedList();
            for(int i = 15; i<doc.text().length(); i++) {//15 because the tables I want starting from 15
                Element element = doc.getElementsByTag("tr").get(i);//table index
                Elements row = element.getElementsByTag("td");
                value6 = row.get(5).text();//getting value6
                value1 = row.get(0).text();//getting value1
                node = new Node(value1, value6);
                ls.insert(node);

正如我說的那樣,這需要花費太多時間,因此我需要更快地進行處理。 任何想法如何解決此問題?

我認為您的問題源於for循環for(int i = 15; i<doc.text().length(); i++) 您在這里要做的是逐個字符地遍歷文檔的整個文本。 我非常懷疑這是您要執行的操作。 我認為您想改為遍歷表行。 所以這樣的事情應該工作:

Document doc = Jsoup.connect(url).get();
Elements trs = doc.select("tr");
for (int i =  15; i < trs.size(); i++){
  Element tr = trs.get(i);
  Elements tds = tr.select("td").;
  String value6 = tds.get(5).text(); //getting value6
  String value1 = tds.get(1).text(); //getting value1
  //do whatever you need to do with the values
}

暫無
暫無

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

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