【问题标题】:How to extract texts between <p> tags如何提取 <p> 标签之间的文本
【发布时间】:2018-04-09 08:22:56
【问题描述】:

我想从位于pli 标记中的HTML 页面中提取文本,因此我可以开始标记页面以为每个页面构建倒排索引以回答搜索查询.

如何使用 jsoup 获取 p 标签

Elements e = doc.select(""); 

该参数中要写入的字符串是什么?

【问题讨论】:

    标签: java html parsing jsoup


    【解决方案1】:

    这样就可以了

    Elements e=doc.select("p"); 
    

    这是您可以使用的所有selectors 的列表。

    假设你有这个 html:

    String html="<p>some <strong>bold</strong> text</p>";
    

    要获得some bold text 作为结果,您应该使用:

    Document doc = Jsoup.parse(html);
    Element p= doc.select("p").first();
    String text = doc.body().text(); //some bold text
    

    String text = p.text(); //some bold text
    

    假设现在你有以下复杂的 html

    String html="<div id=someid><p>some text</p><span>some other text</span><p> another p tag</p></div>"
    

    要从两个 p 标记中获取值,您必须执行以下操作

    Document doc = Jsoup.parse(html);
    Element content = doc.getElementById("someid");
    Elements p= content.getElementsByTag("p");
    
    String pConcatenated="";
    for (Element x: p) {
      pConcatenated+= x.text();
    }
    
    System.out.println(pConcatenated);//sometext another p tag
    

    您也可以找到更多信息here

    希望这有帮助

    【讨论】:

    • 是的,我知道它从食谱中获取 p 标签,但是对于像


    • 注意:当使用select.("p").first();时,如果第一个元素为空,它将返回第二个元素,例如对于&lt;p&gt; &lt;/p&gt;&lt;p&gt;test&lt;/p&gt;,函数将返回“test”而不是“”。我不得不使用 getElementsByTag 来解决它。
    【解决方案2】:
    String testText1 = d.select("body").text();
    System.out.println(testText);
    

    String testText2 = d.select("body p").text();
    System.out.println(testText);
    

    您可以使用它从标签中获取文本。

    【讨论】:

      【解决方案3】:

      试试这个:

      File input = new File("/home/s5/Downloads/PDFCopy/PDs.html");
              Document doc = Jsoup.parse(input, "UTF-8","http://www.cisco.com/c/en/us/products/collateral/wireless/aironet-1815-series-access-points/datasheet-c78-738481.pdf");
              Elements link = doc.select("p");
              String linkText = link.text();
              //System.out.println(linkText);
              String[] words=linkText.split("\\W");
              for(String str:words) 
              {
                  System.out.println(str);
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2018-04-24
        • 1970-01-01
        • 2019-09-04
        • 1970-01-01
        • 2016-05-10
        • 2021-05-20
        • 2020-02-24
        • 1970-01-01
        • 2016-03-22
        相关资源
        最近更新 更多