从中提取RSS Feed网址

时间:2015-01-04 01:51:09

标签: rss web-crawler feed atom-feed scraper

我有100个网站在不同位置公开了RSS Feed。这些位置有几个指向不同Feed的RSS提要链接。它几乎与BBC Rss供稿页面相同 http://www.bbc.com/news/10628494

网站1:domain1.com/rss 站点2:domain2.com/enviroments/rss

有没有办法提取每个feed xml的rss链接。

与此相似的东西 Automatically Extracting feed links (atom, rss,etc) from webpages但我想只提供该网站。这样我就可以获得特定网站的所有可能的RSS源。

我想要列出100个网站的所有RSS Feed。那么我就可以在仪表板上监控它们。哦,饲料aee混合bith原子和rss。

我做了什么。我查看了apache nutch和parse-feed插件。 Scrapy是下一个选择,但我仍然不确定这是我在寻找什么。

1 个答案:

答案 0 :(得分:7)

一般来说,提供RSS feed的网站在至少主页的标题中指示了这一点,每个页面都有一些。

有一个RSS提要的例子:

<link href="http://snapwebsites.org/rss.xml"
      title="Snap! A C++ Open Source CMS RSS"
      type="application/rss+xml"
      rel="alternate">

请注意,网站之间的类型会略有不同。例如,某些网站可能会使用text而不是application(这是错误的,但XML是文字...)还有application/atom+xml。您可能也有这两种格式。

如果没有,那么您必须检查主页或其他页面以获取RSS源的锚链接,这意味着:

  • 解析HTML
  • 寻找锚点
  • 阅读href属性
  • 检查目的地以查看它是否返回XML文件
  • 如果您获得xml文件(以<?xml ...开头),请检查根标记:
    1. 'rss' - RSS格式(版本属性)
    2. 'feed' - Atom格式

我在下一页上有一个示例,其中包含标题中的<link ...>标记:

http://snapwebsites.org/implementation/feature-requirements/feed-feature-core-atom-rss-20-etc

我不得不说,如果没有这个链接,找到RSS提要将会更加困难。话虽这么说,在许多网站上,feed文件使用扩展名(.rss,.atom,.xml),可以用来简化搜索。然而,越来越多的Feed看起来像目录名称(.../blah.../foo无法与标准HTML页面或Feed区分开来,因此唯一的方法是在目的地读取文件并检查文件格式; HTTP回复的Content-Type也应该是application/rss+xmlapplication/atom+xml ...就像标题链接type=...属性一样)