转来的东西QQ接口!
来源:互联网 发布:网络舆情应对培训心得 编辑:程序博客网 时间:2024/04/29 13:07
今天闲着没事,写了这个简单的工具。由于是闲着没事,所以代码质量非常差。也没有加入任何容错的代码,也没有考虑到各种数据,也没有处理需要密码才能访问的qq空间。
但是这个可以给大家提供一个非常好的思路:
view plaincopy to clipboardprint?
using System;
using System.Collections.Generic;
using System.Net;
using System.Text.RegularExpressions;
namespace QQ
{
class QZone
{
private List<long> BlogList = null;
public long QNumber;
public Dictionary<long, QBlogData> BlogDataDictionary = null;
#region 正则匹配表达式
private Regex RgxItem = new Regex("<p class=/"list_tit/">.*?</p>", RegexOptions.Singleline | RegexOptions.Compiled);
private Regex RgxID = new Regex("(?<=Blog//().*?(?=//))", RegexOptions.Singleline | RegexOptions.Compiled);
private Regex RgxTitle = new Regex("(?<=<span >).*?(?=</span>)", RegexOptions.Singleline | RegexOptions.Compiled);
private Regex RgxCategory = new Regex("(?<=Category//(')个人日记(?='//))", RegexOptions.Singleline | RegexOptions.Compiled);
private Regex RgxContext = new Regex("(?<=<div id=/"blogDetailDiv/".*?>).*?(?=</div>)", RegexOptions.Singleline | RegexOptions.Compiled);
private Regex RgxTime = new Regex("(?<=(发表|转载)于).*?(?=<)", RegexOptions.Singleline | RegexOptions.Compiled);
#endregion
public QZone(long QNumber)
{
this.QNumber = QNumber;
}
public List<long> GetBlogList()
{
if(BlogList == null)
{
WebClient wc = new WebClient();
string RecData = wc.DownloadString(string.Format(@"http://b.qzone.qq.com/cgi-bin/blognew/blog_output_toppage?uin={0}&property=GoRE&numperpage=1000&maxlen=1000&direct=1", QNumber));
MatchCollection mc = RgxItem.Matches(RecData);
BlogList = new List<long>();
foreach(Match match in mc)
{
string item = match.Value;
string id = RgxID.Match(item).Value;
BlogList.Add(long.Parse(id));
}
}
return BlogList;
}
public Dictionary<long, QBlogData> GetBlogDataDictionary()
{
if(BlogList == null)
{
GetBlogList();
}
if(BlogDataDictionary == null)
{
WebClient wc = new WebClient();
BlogDataDictionary = new Dictionary<long, QBlogData>();
foreach(long BlogID in BlogList)
{
string RecData = wc.DownloadString(string.Format(@"http://b.qzone.qq.com/cgi-bin/blognew/blog_output_data?uin={0}&blogid={1}&numperpage=1000&property=GoRE", QNumber, BlogID));
QBlogData data = new QBlogData();
data.BlogID = BlogID;
data.Title = RgxTitle.Match(RecData).Value;
data.Context = RgxContext.Match(RecData).Value;
data.Category = RgxCategory.Match(RecData).Value;
data.Time = DateTime.Parse(RgxTime.Match(RecData).Value);
BlogDataDictionary.Add(BlogID, data);
}
}
return BlogDataDictionary;
}
public QBlogData GetBlogData(long BlogID)
{
if(BlogDataDictionary == null)
{
GetBlogDataDictionary();
}
return BlogDataDictionary[BlogID];
}
}
struct QBlogData
{
public long BlogID;
public string Title;
public string Context;
public string Category;
public DateTime Time;
}
}
using System;
using System.Collections.Generic;
using System.Net;
using System.Text.RegularExpressions;
namespace QQ
{
class QZone
{
private List<long> BlogList = null;
public long QNumber;
public Dictionary<long, QBlogData> BlogDataDictionary = null;
#region 正则匹配表达式
private Regex RgxItem = new Regex("<p class=/"list_tit/">.*?</p>", RegexOptions.Singleline | RegexOptions.Compiled);
private Regex RgxID = new Regex("(?<=Blog//().*?(?=//))", RegexOptions.Singleline | RegexOptions.Compiled);
private Regex RgxTitle = new Regex("(?<=<span >).*?(?=</span>)", RegexOptions.Singleline | RegexOptions.Compiled);
private Regex RgxCategory = new Regex("(?<=Category//(')个人日记(?='//))", RegexOptions.Singleline | RegexOptions.Compiled);
private Regex RgxContext = new Regex("(?<=<div id=/"blogDetailDiv/".*?>).*?(?=</div>)", RegexOptions.Singleline | RegexOptions.Compiled);
private Regex RgxTime = new Regex("(?<=(发表|转载)于).*?(?=<)", RegexOptions.Singleline | RegexOptions.Compiled);
#endregion
public QZone(long QNumber)
{
this.QNumber = QNumber;
}
public List<long> GetBlogList()
{
if(BlogList == null)
{
WebClient wc = new WebClient();
string RecData = wc.DownloadString(string.Format(@"http://b.qzone.qq.com/cgi-bin/blognew/blog_output_toppage?uin={0}&property=GoRE&numperpage=1000&maxlen=1000&direct=1", QNumber));
MatchCollection mc = RgxItem.Matches(RecData);
BlogList = new List<long>();
foreach(Match match in mc)
{
string item = match.Value;
string id = RgxID.Match(item).Value;
BlogList.Add(long.Parse(id));
}
}
return BlogList;
}
public Dictionary<long, QBlogData> GetBlogDataDictionary()
{
if(BlogList == null)
{
GetBlogList();
}
if(BlogDataDictionary == null)
{
WebClient wc = new WebClient();
BlogDataDictionary = new Dictionary<long, QBlogData>();
foreach(long BlogID in BlogList)
{
string RecData = wc.DownloadString(string.Format(@"http://b.qzone.qq.com/cgi-bin/blognew/blog_output_data?uin={0}&blogid={1}&numperpage=1000&property=GoRE", QNumber, BlogID));
QBlogData data = new QBlogData();
data.BlogID = BlogID;
data.Title = RgxTitle.Match(RecData).Value;
data.Context = RgxContext.Match(RecData).Value;
data.Category = RgxCategory.Match(RecData).Value;
data.Time = DateTime.Parse(RgxTime.Match(RecData).Value);
BlogDataDictionary.Add(BlogID, data);
}
}
return BlogDataDictionary;
}
public QBlogData GetBlogData(long BlogID)
{
if(BlogDataDictionary == null)
{
GetBlogDataDictionary();
}
return BlogDataDictionary[BlogID];
}
}
struct QBlogData
{
public long BlogID;
public string Title;
public string Context;
public string Category;
public DateTime Time;
}
}
使用的时候直接调用就OK:
view plaincopy to clipboardprint?
static void Main(string[] args)
{
QZone qz = new QZone(qq号);
qz.GetBlogList();
qz.GetBlogDataDictionary();
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/aimeast/archive/2009/05/23/4211676.aspx
- 转来的东西QQ接口!
- 来自QQ,搞笑的东西
- 类似QQ聊天的东西
- 花几千块钱买了电脑,别老只上QQ啊,校内啊,这些手机就能干的事。绝对的好东西,转来的,自己留着。。。
- 吐出来的东西不见了
- 来点基础的东西
- 抄来的东西BeeFramework
- QQ空间祝早阵亡,今天开始把这么多年写的东西全部搬到这里来
- 指针学习(转来的,非常好的东西,很赞)
- 接口相关零碎的东西
- 类似QQ文件发送的东西
- qq的http接口探究
- qq提供的聊天接口
- linux淘来的东西持续更新
- 写自己想出来的东西
- 出洋相,我是来下东西的
- 回收站清空的东西找回来
- QQ桌面快捷方式后面的东西原来可以这么多
- 什么是DOCTYPE
- IT精英,必须掌握的命令行
- 现鹅湖
- Alice saide: when rainning__
- [双语阅读]啦啦队事故多发 成最危险体育运动
- 转来的东西QQ接口!
- Telephone Call(R)
- 什么是封闭式基金
- 票房冠军 top-grossing movie
- 在NetBeans 6.5里面集成Sprint Wireless Toolkit 3.3.2
- Not have a lick 没有一丁点儿
- [英语阅读]麦道夫被判150年监禁
- 商务英语快速突破
- Properties --- C++读配置信息的类(二)