如何识别网络抓取中的Feed?

时间:2012-10-19 17:12:56

标签: java rss feed atom-feed

我进行了网络抓取并收集了大量的html和xml页面。我的目的是从中提取所有Rss / Atom提要。我注意到很多网站只是在标题上使用“text / xml”作为内容类型,所以我无法从任何其他类型的xml中识别出一个Feed。所以我写了这段代码:

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;
}

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

1 个答案:

答案 0 :(得分:1)

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

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