擷取RSS至您的網站中 PART II
- 2008-01-26
- 14801
- 0
上一篇所介紹的擷取方式,是當您要擷取的RSS是標準的節點,如果您要擷取的RSS出現了自訂的節點,您就要參考此篇的方法抓取了。
我們拿diggirl的今日熱門美女的RSS來作範例
■RSS位置:http://www.diggirl.net/hottodayrss.jsp
因為這個RSS使用了自訂標籤,所以我們必須改變方式來抓取
▲ASPX頁面
<asp:Panel ID="Panel2" runat="server" GroupingText="diggirl.net今日熱門美女" Width="100%"> <asp:DataList ID="DataList1" runat="server" Width="100%" EnableViewState="False" RepeatColumns="5" RepeatDirection="Horizontal" ShowFooter="False" ShowHeader="False"> <ItemTemplate> <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='' Target="_blank" Text='' ImageUrl=''></asp:HyperLink> </ItemTemplate> <ItemStyle HorizontalAlign="Left" /> </asp:DataList> <asp:Literal ID="litError2" runat="server" EnableViewState="False"></asp:Literal> </asp:Panel>
▲CS頁面
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.DataList1.DataSource = readRss("http://www.diggirl.net/hottodayrss.jsp", litError2);
this.DataList1.DataBind();
}
}
DataTable readRss(string url, Literal error)
{
XmlDocument xmlDoc = new XmlDocument();
try
{
xmlDoc.Load(url);
}
catch
{
error.Text = "系統繁忙,暫不提供此資訊...";
}
DataTable dt = new DataTable();
dt.Columns.Add("title");
dt.Columns.Add("link");
dt.Columns.Add("photo");
int i;
for (i = 0; i < 10; i++)//我只抓九筆新聞
{
XmlNode xNode = xmlDoc.SelectNodes("//item").Item(i);
string photo = xmlDoc.SelectNodes("rss/channel/item/*[6]/@url").Item(i).InnerText;//直接指定位子去抓到他的文字
if (xNode != null)
{
string title = xNode.SelectSingleNode("title").InnerText;
string link = xNode.SelectSingleNode("link").InnerText;
if (title.Length > 30)//如果標題大於30個字作以下修改
{
title = title.Substring(0, 30) + "....";
}
dt.Rows.Add(title, link, photo);//把抓到的欄位都丟到DataTable內
}
else
{
error.Text = "目前無美女...";
break;
}
}
return dt;
}
?小鋪廢言: rss/channel/item/*[6]/@url 是表示我們要抓的是在RSS父節點下的channel下的item中第6個標籤識別值是url,了解了此用法,不管RSS發佈的是使用啥自訂標籤我們都可以正確的抓到啦,這次的RSS教學到這,如果demo再抓取RSS又出現了問題就會出現PART III的教學啦@@








Roslyn 魔法工坊:打造你的 Source Generator [2025-12-20]開課 共7H
回應討論