【问题标题】:Automatically copying new articles from a website自动从网站复制新文章
【发布时间】:2008-12-31 10:33:06
【问题描述】:

我正在建立一个网站,其中一个部分将显示来自 不同的网站。 (通知是公开的,没有侵犯版权)我需要做的是在目标站点上有新通知时自动更新我的站点。我使用 Joomla 作为我的 CMS。有什么想法吗?

更新 - 很遗憾没有 RSS 提要 :(

感谢和问候, 南德

【问题讨论】:

    标签: joomla


    【解决方案1】:

    有一些工具可以抓取网站并将其转换为 RSS(不过,您必须做一些工作来指定如何为新网站进行这种转换)。例如见http://rssscraper.rubyforge.org/

    【讨论】:

      【解决方案2】:

      如果其他站点为他们的通知提供 RSS 提要,最简单的方法是使用 Joomla 的 RSS 插件来呈现它们。

      【讨论】:

        【解决方案3】:

        由于您的目标还没有 RSS 提要——您可以用 PHP 编写一个(IIRC Joomla 是用它编写的,所以我假设支持)。您只需要连接到远程网站,并解析 HTML(正则表达式是您的朋友)以生成提要数据;我倾向于将此输出作为 RSS,然后发送到您的 Joomla 网站。

        解析 HTML 的缺点包括对他们的网站布局添加了巨大的依赖——这可以通过“给”他们生成 RSS 供他们托管的 php 来缓解,因为这也会为他们的网站增加价值,以及就像将维护所有权转让给他们一样。

        【讨论】:

          【解决方案4】:

          您可以使用 yahoo pipes 和/或 yahoo query language (yql) 将网站转换为 rss 或 xml

          【讨论】:

            【解决方案5】:

            我同意 frankodwyer 和 Rowland 的回答,但要考虑的一件事是让网站所有者(如果它仍在积极开发,我假设如果有新消息)添加 RSS 提要。这不是最难的事情。

            【讨论】:

              【解决方案6】:

              需要注意的是,“公共”并不意味着没有版权,除非明确放在公共领域。有很多东西是公开的,同时保留了它们的自动版权。

              【讨论】:

                【解决方案7】:

                如果您可以查看您尝试从中提取信息的网站的 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;
                    }
                }
                

                这只是如何从网页中提取信息的基本指标。它可以被开发,因此您可以从网页上逐条提取信息,然后甚至按照您自己的方式对其进行格式化。

                希望有帮助

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-01-16
                  • 2022-08-04
                  • 2011-07-22
                  • 2023-03-10
                  • 2020-05-07
                  • 2017-02-18
                  • 1970-01-01
                  相关资源
                  最近更新 更多