2012-02-24 57 views
1

我一直在使用下面的代碼在谷歌新聞拉,但是,我需要有最終結果在網站上是一個實際的RSS提要,以便其他人可以搶進。現在輸出創建一個不錯的index.php頁面。這很好,但不符合我的目的。 SimplePie可以創建一個被格式化爲rss輸出的頁面用於抓取目的嗎?捆綁RSS在電子郵件

謝謝你提前。


<?php 

// Make sure SimplePie is included. You may need to change this to match the location of simplepie.inc. 
require_once('simplepie.inc'); 

// We'll process this feed with all of the default options. 
$feed = new SimplePie(); 

// Set the feed to process. 
$feed->set_feed_url('http://news.google.com/news?hl=en&gl=us&q=new+york+commercial+real+estate&ie=UTF-8&output=rss'); 

// Run SimplePie. 
$feed->init(); 

// This makes sure that the content is sent to the browser as text/html and the UTF-8 character set (since we didn't change it). 
$feed->handle_content_type(); 

// Let's begin our XHTML webpage code. The DOCTYPE is supposed to be the very first thing, so we'll keep it on the same line as the closing-PHP tag. 
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head> 
    <title>Sample SimplePie Page</title> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 

</head> 
<body> 

     <div class="header"> 
     <h2><a href="<?php echo $feed->get_permalink(); ?>"><?php echo $feed->get_title(); ?></a></h2> 
     <p><?php echo $feed->get_description(); ?></p> 
    </div> 

    <?php 
    /* 
    Here, we'll loop through all of the items in the feed, and $item represents the current item in the loop. 
    */ 
    foreach ($feed->get_items() as $item): 
    ?> 

     <div class="item"> 
      <h4><a href="<?php echo $item->get_permalink(); ?>"><?php echo $item->get_title(); ?></a></h4> 
      <p><?php echo $item->get_description(); ?></p> 
      <p><small>Posted on <?php echo $item->get_date('j F Y | g:i a'); ?></small></p> 
     </div> 

    <?php endforeach; ?> 

</body> 
</html> 
+0

僅供參考,我相信在你所描述的侵犯了他們的服務條款的方式重新包裝谷歌新聞。 – Brad 2012-02-24 05:05:54

回答

0

使用了SimplePie只用於分析階段,你需要編寫自己的代碼來輸出作爲RSS。

你可以做到這一點的快速和骯髒的方式:

<?xml version="1.0" encoding="UTF-8" ?> 
<rss version="2.0"> 
    <channel> 
     <title>Your Site</title> 

<?php 
     foreach ($feed->get_items() as $item): 
?> 
     <entry> 
      <title><?php echo $item->get_title() ?></title> 
      <description><?php echo $item->get_content() ?></description> 
      <!-- ... --> 
     </entry> 
    </channel> 
</rss> 

一個更好的方法是使用SimpleXML來創建元素,然後輸出的結果。這將確保您的XML格式正確,並且所有內容都能正確轉義。

但是,你也有這樣的時候,布拉德提到要小心的服務條款。您應該至少確保正確的歸屬。

+0

謝謝,我非常關心違反任何服務條款。我看過他們的服務條款,似乎如果你確保適當的歸屬,它不會是一個問題,但我肯定在這個開放的討論,因爲它似乎有點不清楚。至於代碼片段,感謝您的建議,我會試一試。 – 2012-02-24 13:55:32

+0

關於快速和簡單的由Ryan提供 - 是將被集成到或者了SimplePie無關的代碼完全從分離了SimplePie代碼?我看到了$用品 - > get_title()看起來像圖書館了SimplePie代碼,並可以找到沒有提及供稿網址。謝謝。 – 2012-02-24 14:15:25

+0

該代碼會在您想要輸出Feed的任何位置執行。在上面的例子中,它替換了「讓我們開始我們的XHTML網頁代碼」之後的所有內容。這也只是一個非常快速的例子,一個完整的feed會包含更多的信息,但這只是SimplePie方法匹配標籤的一個例子。 – 2012-02-25 13:07:43