61阅读

rss feed-巧用 Google Reader 合并你的 Rss Feed

发布时间:2017-10-15 所属栏目:net framework

一 : 巧用 Google Reader 合并你的 Rss Feed

篇文章提到了使用 Yahoo!Pipes 合并你的 Feeds ,但是问题出现了,Pipes 默认情况下,假如两个 Rss Feed 放在同一个 Source 里,如图:

Pipes

那么,默认状态下 Pipes 更新你的合并后的 Rss Feed 就会按照上下顺序,要按照时间顺序排列就得按这张图(任平生提供)

最重要的是, Pipes 更新的速度明显不如 Google Reader ,接下来,我就来教大家如何使用 Google Reader 合并你的 Rss Feed 吧。

考虑国内用户使用习惯,所以我把 Google Reader 的语言设置成了简体中文,方便大家阅读。

首先,用你的 Google 账户登录 Google Reader :http://www.google.com/reader/

然后点击左上角的 添加订阅 ,输入第一个 feed 地址,接着,同样的方法,增加第二个第三个订阅地址,前面不用加 http://

image

增加完毕,进入左下角的订阅管理,很小很小的一行字:

image

直接的链接是:http://www.google.com/reader/settings?display=edit-subscriptions

找到你的一个订阅,然后看到右边的更改文件夹了吧?自己新建一个文件夹吧:

image

然后把你需要增加的几个 Feed 全部放到自己的文件夹里,这里我用的是 Blogging 文件夹

接着,在 文件夹和标签 那里,把这个文件夹设置成公共

image

这个时候,就可以查看这个 公共文件夹 的网页地址了,比如我的 Blogging 文件夹的地址是:http://www.google.com/reader/shared/user%2F08115904862391354804%2Flabel%2FBlogging

右下方有一个 Atom供稿 链接

image

嗯,这个就是合并以后的 Rss 地址了,偶的就是:

http://www.google.com/reader/public/atom/user%2F08115904862391354804%2Flabel%2FBlogging

把这个 Rss 地址增加到你的 FeedSky 中去吧,然后,等着 FeedSky 更新即可。s

说说 Google Reader 比 Yahoo! Pipes 好的几点:

1、简洁方便,而且没其他对合并 Rss Feed 没用的多余功能,我承认 Pipes 确实不错,但是很多功能用不上,我只需要合并两三个 Rss Feed 就行了。

2、更新快,而且不会因为两个 Feed 的顺序问题,而使得烧录的 Feed 文章次序让人头大。

3、你是 Google 的粉丝么?那就来试试用 Google Reader 合并你的订阅源吧!

欢迎订阅我的博客:http://feed.showfom.com/

或者 Follow 我一下,最近迷上了 Twitter :https://twitter.com/Showfom

PS:貌似我用 Google Reader 合并以后,原来 FeedSky 的展示广告没了,不过也没关系,本博客不盈利~

二 : 马克斯电影站生成Rss Feed的代码

前段时间为了给本人的电影站增加Rss订阅功能,动手写了个动态生成Rss Feed的ASP代码,没法上传附件,就直接贴代码吧,反正也不长,用马克斯做电影站的朋友直接拿去用吧,其它类型的站点修改一下也能用。生成的Rss Feed采用UTF-8编码,经过feedvalidator.org校验,兼容Rss 2.0和Atom。

使用方法:将下面的代码存为rss.asp(记得以UTF-8格式保存)并上传到网站根目录,剩下的工作就是找Rss提交入口去提交你的Feed地址http://你的域名/rss.asp

演示:http://www.366mv.cn

代码如下,请根据注释修改相应的信息,版权信息还望各位能够保留 ^_^

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Session.CodePage=65001
Response.Charset="UTF-8"
'========================================================================
'Copyright (c) 2005-2007, 酸溜溜影视([url]www.366mv.cn[/url]) All rights reserved.
'========================================================================
'名称: rss.asp
'描述: 动态生成Rss Feed。
'========================================================================
%>
<!--#include file=inc/conn.asp--><?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<%
title="酸溜溜影视"      '改成你自己的名称
response.write" <channel>"&chr(13)
response.write"<atom:link href=""http://"&maxz_2&"/xml.asp"" rel=""self"" type=""application/rss+xml"" />"&Chr(13)
response.write"  <title>最近更新影片 - "&title&"</title>"&chr(13)
response.write"  <link>http://"&maxz_2&"</link>"&Chr(13)
response.write"  <description>"&title&" - 万部影片在线观看。免费电影,在线电影,TVB,日剧,韩剧,动漫,科幻,恐怖,言情,连续剧,大片,贺岁片……</description>"&Chr(13)
response.write get_left(15,0)   '显示前15部影片,按更新日期排序
response.write" </channel>"&chr(13)

Function re(str)
If Not IsNull(str) then
  re=Replace(str,"&","&")
  re=Replace(re,"<","<")
  re=Replace(re,">",">")
  re=Replace(re,"'","&apos;")
  re=Replace(re,"""",""")
End if
End Function

Function get_left(n,m)
n=CInt(n):m=CInt(m)
If m=1 Then
  mm=" order by zt_hits desc"  '按点击量排序
Else
  mm=" order by zt_date desc"  '按更新日期排序
End If
set rs1=conn.execute("select top "&n&" zt_id,zt_name,zt_zy,zt_dy,zt_type,zt_date,zt_hits,zt_content from zt_data"&mm)
get_left_i=0
Do while not rs1.eof
  get_left_i=get_left_i+1
  get_left=get_left&"  <item>"&Chr(13)
  get_left=get_left&"   <title>"&re(rs1("zt_name"))&"</title>"&Chr(13)
  get_left=get_left&"   <link>http://"&maxz_2&"/"&get_classenname(rs1("zt_type"))&"/"&rs1("zt_id")&"</link>"&Chr(13)
  get_left=get_left&"   <description><![CDATA[<p>类别:<a href=""http://"&maxz_2&"/"&get_classenname(rs1("zt_type"))&""">"&get_classname(rs1("zt_type"))&"</a></p><p>主演:"&rs1("zt_zy")&"</p><p>剧情:"&re(rs1("zt_content"))&"</p>]]></description>"&Chr(13)
  get_left=get_left&"   <guid>http://"&maxz_2&"/"&get_classenname(rs1("zt_type"))&"/"&rs1("zt_id")&"</guid>"&Chr(13)
  get_left=get_left&"   <category><![CDATA["&get_classname(rs1("zt_type"))&"]]></category>"&Chr(13)
  get_left=get_left&"   <pubDate>"&DateToRFC822(rs1("zt_date"))&"</pubDate>"&Chr(13)
  get_left=get_left&"  </item>"&Chr(13)
  If get_left_i>=n Then Exit Do
  rs1.movenext
Loop
rs1.close
End Function

Function DateToRFC822(byVal dtaVal)
Dim strCurLocale : strCurLocale = GetLocale()
SetLocale("en-gb")
dtaVal = CDate(dtaVal)
DateToRFC822 = WeekdayName(Weekday(dtaVal),True)&", "& _
    Right("0"&Day(dtaVal),2)&" "& _
    MonthName(Month(dtaVal),True)&" "& _
    Year(dtaVal)&" "& _
    Right("0"&Hour(dtaVal),2)&":"& _
    Right("0"&Minute(dtaVal),2)&":"& _
    Right("0"&Second(dtaVal),2)&" "& _
    "+0800"
SetLocale(strCurLocale)
End Function
%></rss>

三 : 如何利用.NET Framework使用RSS feed

如果想利用.NET Framework来使用RSS feed的话,这其实并不复杂。你只需要做下面几步就可以了:

◆链接到提供RSS feed的网站

◆下载feed XML

◆将feed的XML装载到允许搜索的对象中

◆为你想提取的结点搜索feed的XML

.NET Framework提供了内置函数来完成所有的任务。我们所需要做的就是,将这些功能绑定在一起,这样我们就可以使用RSS feeds。

链接到服务器

我们可以使用WebRequest对象链接到服务器上。WebRequest对象使你可以在Web站点上贴出请求,自从RSS通过HTTP传输后,WebRequest对象就成了链接服务器最主要的选择了。

Listing A中的代码告诉我们,任何将一个新的WebRequest对象与一个URL进行连接。

Listing A

以下为引用的内容:
//Create a WebRequest object
WebRequest myRequest = WebRequest.Create(url);

在这个例子中,也可以用完整URL的来取代RSS feed中的“url”。下面是MSN Automotive RSS feed的地址:http://rss-feeds.msn.com/autos/autosnews.xml

下载RSS数据

当我们连接到服务器之后,我们需要下载feed提供的数据。WebRequest对象为实现这个目的提供了一个GetResponse()方法。WebRequest.GetResponse()方法返回一个WebRequest对象,这个对象根据我们的请求给我们访问服务器的响应。

在这里我们将用到WebResponse(Web响应)对象的GetResponseStream()方法。这个方法返回一个Stream对象,这个对象中包含了服务器所响应的原始RSS XML。Listing B中的代码告诉我们如何从WebRequest(Web请求)对象得到WebResponse(Web响应)对象,和如何从WebResponse(Web响应)对象得响应流。

Listing B

以下为引用的内容:
//Get the response from the
WebRequestWebResponse myResponse = myRequest.GetResponse();
//Get the response's
streamStream rssStream = myResponse.GetResponseStream();

将RSS数据装载到XML文档中

一旦我们从WebResponse(Web响应)对象得到了流,我们就将这个流下载到XmlDocument对象中了。这样我们就很容易对XML数据进行分析了,并能轻松地从中取值。得到XmlDocument装载Stream最简单的方法是,创建一个新的XmlDocument对象,并将我们的Stream传递给Load方法。Listing C为我们说明了这个方法的使用。

Listing C

以下为引用的内容:
//Create the
Xml DocumentXmlDocument document = newXmlDocument();
//Load the stream into the XmlDocument object.
document.Load(rssStream);

分析XML

这是使用RSS feed最难的部分。我们必须使用刚才创建的XmlDocument来得到含有我们自己数据的XML结点。我们普遍感兴趣的结点是:

◆Feed的标题,它存放在feed XML中的/rss/channel/title文件里面

◆Feed的文章,它存放在feed XML中的/rss/channel/item文件里面。在这个位置可能有多个结点。

◆文章的标题,它存放在文章结点中的title里面。

◆文章的描述,它存放在文章结点的description里面。

◆文章的链接,它存放在文章结点的link里面。

我们可以使用XmlDocument对象内置的SelectSingleNode函数和SelectNodes函数来得到这些结点。这两个函数都可以接受XPath查询,也都可以返回与查询结果相匹配的一个或多个结点。

Listing D这段代码告诉我们如何使用XmlDocument和Xpath从RSS feed中分析出每个单独的元素。

Listing D

以下为引用的内容:
//Get an XmlDocument object that contains the feed's XML
XmlDocument feedDocument = GetXmlDocumentFromFeed("http://rss-feeds.msn.com/autos/autosnews.xml");
//Create a XmlNamespaceManager for our namespace.
XmlNamespaceManager manager =
newXmlNamespaceManager(feedDocument.NameTable);
//Add the RSS namespace to the manager.
manager.AddNamespace("rss", "http://purl.org/rss/1.0/");
//Get the title node out of the RSS document
XmlNode titleNode =
feedDocument.SelectSingleNode("/rss/channel/title", manager);
//Get the article nodes
XmlNodeList articleNodes =
feedDocument.SelectNodes("/rss/channel/item", manager);
//Loop through the articles and extract
// their data.
foreach (XmlNode articleNode in articleNodes)
{
//Get the article's title.
string title =
articleNode.SelectSingleNode("title", manager).InnerText;
//Get the article's link
string link =
articleNode.SelectSingleNode("link", manager).InnerText;
//Get the article's description
string description =
articleNode.SelectSingleNode("description", manager).InnerText;
}

不是所有的RSS feed的创建都是相同的

如果所有的RSS feed都使用相同的格式,它将变得更强大,然而RSS feed有许多不同的版本和实现。在这篇文章中描述的格式适合大部分的feed,可能有少部分的RSS feed格式与这个格式不同。

本文标题:rss feed-巧用 Google Reader 合并你的 Rss Feed
本文地址: http://www.61k.com/1080020.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1