浪网微博依据他名人博客的优势和依然流氓的推广,目前已经做到毫无疑问的国内微博头把交椅。其余的什么腾讯,搜狐,网易,老牌一点的做啥,嘀咕都没有如今浪网微博这般势力壮大。当然,流氓本性不改,听说负责删贴的编辑就300多人。所以依然是娱乐为主。那就娱乐吧。 公司老板想在网站上加个微博的内容,本来说是要搭建一个微博,此时我难中闪过某网站统计的程序员之十大最怕之一就是不懂编程的老板。然后我说大哥,都这么多微博了,而且微博这种东西不是我们小公司玩得起的。你不是想要微博内容吗,我给你从浪网拿过来就是。于是就这么定了。 代码参考了月光大人写的 php生成sina微博rssfeed方法。这个是asp.net版。 我的浪网微博:http://t.sina.com.cn/uspython 多联系 网页代码sinafeed.aspx <%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”sinafeed.aspx.cs” Inherits=”T_sinafeed” %><%@ OutputCache VaryByParam=”*” Duration=”60″ %><?xml version=”1.0″ encoding=”utf-8″?> <rss version=”2.0″> <channel> <title>sinarssfeed</title> <link>rssfeed</link> <description>rssfeed</description> <language>zh-cn</language> <%=StrRSS%> </channel> </rss> 后台代码: sinafeed.aspx.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Net; using System.Text; using System.Text.RegularExpressions; public partial class T_sinafeed : System.Web.UI.Page { protected string StrRSS = “”; protected void Page_Load(object sender, EventArgs e) { this.LoadData(); } private void LoadData() { /* 通过浪网的widget页面取的需要的数据,通过正则表达式 */ WebClient myWebClient = new WebClient(); //构建WenClient对象 myWebClient.Encoding = Encoding.UTF8; myWebClient.Credentials = CredentialCache.DefaultCredentials; string startflag = “<div id=\”content_all\” class=\”wgtList\”>”; //widget页面开始标签 string endflag = “<div id=\”rolldown\” class=\”wgtMain_bot\”>”; //widget页面结束标签 //通过uid获取用户wedget页面,uid即你个人页面http://t.sina.com.cn/1430466211/profile中间的部分,比如我的是1430466211 //http://v.t.sina.com.cn/widget/widget_blog.php?height=500&skin=wd_01&showpic=1&uid=1430466211 是浪网widget的链接,我们就是用它。 string temp = myWebClient.DownloadString(“http://v.t.sina.com.cn/widget/widget_blog.php?height=500&skin=wd_01&showpic=1&uid=1430466211”); //截取所需字符串 temp = temp.Substring(temp.IndexOf(startflag), temp.IndexOf(endflag) – temp.IndexOf(startflag)); //所需内容部分的正则表达式 string strReg = “<p class=\”wgtCell_txt\”>([\\S\\s]*?)</p>([\\S\\s]*?)<a href=\”(.*)\” title=\”\” target=\”_blank\” class=\”link_d\”>([\\S\\s]*?)</a>”; Regex re = new Regex(strReg, RegexOptions.IgnoreCase); MatchCollection mc = re.Matches(temp); if (mc.Count != 0) { /*字符串格式如下 <item> <title>TITLE</title> <>description<![CDATA[DESCRIPTION]]></description> <pubDate>DATE<?php echo 9-$i; ?>:04Z</pubDate> <guid>GUID</guid> <link>LINK</link> </item> */ StringBuilder rsssb = new StringBuilder(); for (int i = 0; i < mc.Count; i++) { rsssb.Append(“<item>\r\n”); rsssb.Append(“<title><![CDATA[“); //得到匹配成功的title部分,即微博正文,根据正则表达式,处于数组的第1个位置 rsssb.Append(mc[i].Groups[1].Value); rsssb.Append(“]]></title>\r\n”); rsssb.Append(“<description><![CDATA[“); //得到匹配成功的description部分,这里只是把发布时间,如:今天 15:30,放了进来,根据正则表达式,处于数组的第4个位置 rsssb.Append(mc[i].Groups[4].Value); rsssb.Append(“]]></description>\r\n”); rsssb.Append(“<pubDate>”); //这里的时间是系统的时间,你也可以根据description的时间信息把微博的发布时间switch出来,我就不列举了。 rsssb.Append(DateTime.Now.ToString(“yyyy-MM-ddTHH:mm:ss”) + “+08:00”); rsssb.Append(“</pubDate>\r\n”); //忽略guid //sb.Append(“<guid>”); //sb.Append(Guid.NewGuid().ToString()); //sb.Append(“</guid>\r\n”); //得到微博的链接 rsssb.Append(“<link>”); rsssb.Append(mc[i].Groups[3].Value); rsssb.Append(“</link>\r\n”); rsssb.Append(“</item>\r\n\r\n”); } //将构造完成的字符串赋给前台变量 this.StrRSS = rsssb.ToString(); Read the full article…

点我阅读全文...