java - 如何提高Jsoup的解析速度

标签 java parsing jsoup

public static void main(String[] args) throws MalformedURLException, IOException{

        Document doc = Jsoup.connect("MY_URL").userAgent("Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.4 Safari/537.36").get(); 

        int i = 1;
        for(Element table : doc.select("tbody")){       

             for (Element row : table.select("tr")) {

                for (Element sale1 : row.select("td.sale_type.bottomline div.inner.pl4")){
                     System.out.print(i + " : " + sale1.text() + " / ");
                }
                for (Element sale2 : row.select("td.sale_type2.bottomline div.inner")){
                     System.out.print(sale2.text() + " / ");
                }
                for (Element date : row.select("td.bottomline div.inner.inner_mark span.mark4")){
                     System.out.print(date.text() + " / ");
                }
                for (Element add : row.select("td.align_l.name div.inner ")){
                     System.out.print(add.text() + " / ");
                }
                for (Element size : row.select("td.num div.inner ")){
                     System.out.print(size.text() + " / ");                 
                }
                for (Element floor : row.select("td.num2 div.inner ")){
                     System.out.print(floor.text()+ " / ");                 
                }
                for (Element price : row.select("td.num.align_r div.inner ")){
                     System.out.print(price.text()+ " / ");                 
                }
                for (Element cont : row.select("td.contact.bottomline div.inner ")){
                     System.out.println(cont.text());   i++;                
                }


             }
        }

    }

我正在使用 Jsoup 从一些网站解析, 但此外,我还需要访问大约 20,000 个网站, 我不知道这段代码是否是设计优化 我还没有测试过,但我担心处理速度慢...... 如果慢的话,我想改进更多好的设计, 为了获得更好的性能,我必须对此代码进行哪些修改?

最佳答案

一些修复:

public static string getTableData(Document doc){
    StringBuilder sb = new StringBuilder();
    for(Element table : doc.select("tbody")){       
         int i = 0;
         for (Element row : table.select("tr")) {
            i++;
            for (Element sale1 : row.select("td.sale_type.bottomline div.inner.pl4")){
                 sb.Append(i + " : " + sale1.text() + " / ");
            }
            for (Element sale2 : row.select("td.sale_type2.bottomline div.inner")){
                 sb.Append(sale2.text() + " / ");
            }
            for (Element date : row.select("td.bottomline div.inner.inner_mark span.mark4")){
                 sb.Append(date.text() + " / ");
            }
            for (Element add : row.select("td.align_l.name div.inner ")){
                 sb.Append(add.text() + " / ");
            }
            for (Element size : row.select("td.num div.inner ")){
                 sb.Append(size.text() + " / ");                 
            }
            for (Element floor : row.select("td.num2 div.inner ")){
                 sb.Append(floor.text()+ " / ");                 
            }
            for (Element price : row.select("td.num.align_r div.inner ")){
                 sb.Append(price.text()+ " / ");                 
            }
            for (Element cont : row.select("td.contact.bottomline div.inner ")){
                 sb.Append(cont.text());                   
            }
         }
    }
    return sb.toString();
}

public static void main(String[] args) throws MalformedURLException, IOException{
    Document doc = Jsoup.connect("MY_URL").userAgent("Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.4 Safari/537.36").get(); 
    string result = getTableData(doc);
    System.out.println(result); 
}

关于java - 如何提高Jsoup的解析速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32198296/

相关文章:

java - 如何强制我的 EAR 文件仅部署在特定服务器上?

java - 输入和循环

iphone - Objective C - 将科学记数法 "String"转换为 Double

java - Android - 获取需要登录的页面的源代码

java - 使用 JSOUP 选择 HTML 表格中的链接

java - 用于匹配 URL 部分的正则表达式

java - JTable 仅在双击和 F2 时编辑单元格,而不是在任何按键上

c++ - 将一个字符串解析为多个字符串

Java简单句解析器

java - 将 XPath 转换为 Jsoup 的 CssSelector