如何在 Java 中使用 Jericho 解析源代码中的所有链接,同时过滤掉或忽略具有特定 id 的元素



我正在使用Jericho java客户端库来解析所有href链接。我想做的是过滤掉或跳过源中包含特定 id 的所有链接。我已经尝试了几件事,我的解决方案并不漂亮,但基本上我可以通过检查这样的东西来完成这一点:

for(Element element : elements) {
  if (element.getAllStartTags().toString().contains("skip_me")) {
    // do something
  }
}

但我更喜欢更清洁的解决方案。让我们假设这是来源:

<td>
 <a href="http://www.yahoo.com" id="skip_me" />
</td>
<td>
 <a href="http://www.google.com" />
</td>

只是一个小片段,但我希望它最终返回我的只是"www.google.com"。我将不胜感激对此的任何帮助。谢谢。

这是另一种解决方案:

for( Element element : elements )
{
    if( element.getStartTag().getName() == HTMLElementName.A ) // Select only 'a'-tags
    {
        final String id = element.getAttributeValue("id"); // Get Attribute 'id'
        if( id == null || !id.equals("skip_me") ) // Process element if it has a.) no id (null) or b.) the id is not 'skip_me'
        {
            System.out.println(element); // Process Element
        }
    }
}

输出:
(使用您的 HTML)

<a href="http://www.google.com" />
Another solution:       
List<Element> elements = source.getAllElements("a");        
for(Element element : elements )
     {
      final String id = element.getAttributeValue("id");
      if(id == null || !id.equals("skip_me")) 
         {
          System.out.println(element.toString());    
         }
     }

输出:

<a href="http://www.google.com" />  

相关内容

  • 没有找到相关文章