【问题标题】:Extract RSS Feed url from从中提取 RSS Feed url
【发布时间】:2015-03-01 22:20:10
【问题描述】:

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

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

有什么方法可以提取到每个提要 xml 的 rss 链接。

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

我想要一份来自 100 个网站的所有 rss 提要的列表。所以我可以在仪表板上监控它们。哦,饲料 aee 混合了比特原子和 rss。

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

【问题讨论】:

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


    【解决方案1】:

    一般来说,提供 RSS 提要的网站至少会在主页的标题中指出这一点。

    有一个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文件(以&lt;?xml ...开头)然后检查根标签:
    1. 'rss' -- RSS 格式(版本是一个属性)
    2. 'feed' -- Atom 格式

    我在以下页面上有一个示例,该示例在标题中包含 &lt;link ...&gt; 标记:

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

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


    作为旁注,虽然不太可能(我没有在实时网站上真正看到过),但可以使用Link: ... HTTP header 来表示...链接与找到的&lt;link ...&gt; 标记相同在 HTML 标头中。如果您有权访问 HTTP 标头 (here is how to do it in PHP),则值得查找这些标头以查看其中一个是否为 RSS 提要。

    【讨论】:

    • 我希望这些家伙已经设法将提要链接放入正确的类型。以便它们易于拾取。正如我想象的那样,如果没有,爬行将需要更长的时间。
    • 是的。好吧...一旦获得链接,您就很好了。另一方面,如果您在一个网站上有许多提要,它们不太可能不会全部出现在标题 link 标记中。这取决于您是否想要获取所有提要。
    • 您的权利当然不会出现在标题中。我们将不得不简单地抓取所有页面并解析内容以检查它是否具有我们正在寻找的 Content-Type。
    猜你喜欢
    • 2012-10-04
    • 2012-03-04
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多