如何使用JSoup仅获取包含必要关键字的网页文本?

时间:2016-07-04 11:34:26

标签: java web web-crawler jsoup

我想出了一些没有成功的东西。我正在尝试仅提取包含关键字的文本而不是网页的整个文本,因为网页上有该关键字。

    String pconcat="";

for (i = 0; i < urls.length; i++) {

Document doc=Jsoup.connect(urls[i]).ignoreContentType(true).timeout(60*1000).get();

        for(int x=0;x<keyWords.length;x++){
        if(doc.body().text().toLowerCase().contains(keyWords[x].toLowerCase())){
              Elements e=doc.select("body:contains("+keyWords[x]+")");
              for(Element element : e)
                {
                pconcat+=element.text();
                System.out.println("pconcat"+pconcat);
          }     
         }
        }
       }

考虑一下example.com,如果我找的关键字是&#34;文件&#34; ,我需要输出为&#34;该域名被建立用于文档中的说明性示例。&#34;没有别的

1 个答案:

答案 0 :(得分:0)

您不需要小写正文以便使用:contains选择器,它不区分大小写。

  

包含指定文本的元素。搜索是大小写的   不敏感的。文本可能出现在找到的元素或其任何元素中   后代。

select()只会在找到匹配项时返回元素。

  

与查询匹配的元素(如果没有匹配则为空)

您不需要if - 语句来检查&#34;文档&#34;,只需使用css选择器选择匹配的任何元素,然后对结果执行某些操作。

    Document doc = Jsoup
            .connect(url)
            .ignoreContentType(true)
            .timeout(60*1000)
            .get();

    for (String keyword : keywords) {

        String selector = String.format(
                "p:contains(%s)", 
                keyword.toLowerCase());

        String content = doc
                .select(selector)
                .text();

        System.out.println(content);

    }

<强>输出

  

该域名被建立用于说明中的示例   文档。您可以在不事先的示例中使用此域   协调或征求许可。