【问题标题】:how to identify feeds in a web crawl?如何识别网络爬网中的提要?
【发布时间】:2012-10-10 08:36:45
【问题描述】:

我已经进行了一次网络爬虫,并收集了很多 html 和 xml 页面。我的目的是从中提取所有 Rss/Atom 提要。我注意到许多网站只是在标题上使用“text/xml”作为内容类型,因此我无法识别来自任何其他类型 xml 的提要。于是我写了这段代码:

public boolean isFeed(String content){
    Document doc = Jsoup.parse(content);
    Elements feed = doc.getElementsByTag("feed");
    Elements channel = doc.getElementsByTag("channel");
    if(feed!=null){
        if(!feed.isEmpty()){
             return true;
        }
    }
    if(channel!=null){
        if(!channel.isEmpty()){
             return true;
        }
    }
    return false;
}

这里有什么遗漏吗?有什么问题吗?

【问题讨论】:

    标签: java rss feed atom-feed


    【解决方案1】:

    使用成熟的 XML 解析器解析文档。如果它不编译,它就不是 Atom。然后获取文档(根)元素。如果不是<feed xmlns="http://www.w3.org/2005/Atom">,就不是Atom。当然使用适当的 API 来读取标签名称和命名空间,不要比较字符串。

    采取类似的方法来发现 RSS。或者使用Rome库为你解析文档。

    【讨论】:

    • RSS提要的根元素是什么?
    • @Pazis:RSS 和 Atom 都是 XML 文档。 XML 文档的根元素基本上是最外层的标记(文件中的第一个 XML 标记,不包括序言)。
    猜你喜欢
    • 2012-01-14
    • 2012-08-01
    • 1970-01-01
    • 2011-12-13
    • 2017-11-14
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多