我正在建立一个网站,其中一个部分将显示来自不同网站的公告。(通知是公开的,没有侵犯版权)我需要做的是在目标站点上有新通知时自动更新我的站点。我使用 Joomla 作为我的 CMS。有任何想法吗?
更新 - 不幸的是没有 RSS 提要 :(
谢谢和问候, 南德
我正在建立一个网站,其中一个部分将显示来自不同网站的公告。(通知是公开的,没有侵犯版权)我需要做的是在目标站点上有新通知时自动更新我的站点。我使用 Joomla 作为我的 CMS。有任何想法吗?
更新 - 不幸的是没有 RSS 提要 :(
谢谢和问候, 南德
有一些工具可以抓取站点并将其转换为 RSS(但是,您必须做一些工作来指定如何为新站点进行转换)。例如参见http://rssscraper.rubyforge.org/
如果其他站点为他们的通知提供 RSS 提要,最简单的方法是使用 Joomla 的 RSS 插件来呈现它们。
由于您的目标还没有 RSS 提要——您可以用 PHP 编写一个(IIRC Joomla 是用它编写的,所以我假设支持)。您只需要连接到远程网站,并解析 HTML(正则表达式是您的朋友)以生成提要数据;我倾向于将此输出作为 RSS,然后进入您的 Joomla 站点。
解析 HTML 的缺点包括对他们的网站布局添加了极大的依赖——这可以通过“给”他们生成 RSS 供他们托管的 php 来缓解,因为这会为他们的网站增加价值,以及转移所有权对他们的维护。
您可以使用yahoo 管道和/或yahoo 查询语言(yql)将网站转换为 rss 或 xml
需要注意的是,“公共”并不意味着无版权,除非明确置于公共领域。有很多东西是公开的,同时保留了它们的自动版权。
如果您可以查看您尝试从中提取信息的网站的 HTML 代码,并且他们的新闻文章实体具有逻辑命名系统,您应该能够使用 fopen 命令,例如。
<?php
$handle = fopen("http://www.example.com/", "r");
?>
如果文章代码的布局如下所示,则使用它从文章代码中提取的信息:
<div class="post" id="post-16283">
<div class="postheader">
<h1 id="article-title">Test Article Code</h1>
</div>
<div class="postcontent">
This is the article text
</div>
<div class="postfooter">
Copyright Information
</div>
</div>
然后,您可以使用以下 php 代码显示文章的所有标题:
if (preg_match_all("#<div class="postheader"(.*?)</div>#s", $handle, $matches, PREG_PATTERN_ORDER) > 0) {
foreach ($matches[0] as $match) {
echo $match;
}
}
这只是如何从网页中提取信息的基本指标。它可以被开发,因此您可以从网页上逐条提取信息,然后甚至以您自己的方式对其进行格式化。
希望有帮助
我同意 frankodwyer 和 Rowland 的回答,但要考虑的一件事是让网站所有者(如果它仍在积极开发,我假设如果有新消息)添加一个 RSS 提要。这不是最难做的事情。