加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用正则表达式抓取腾讯微博上的图片

发布时间:2020-12-14 02:24:39 所属栏目:百科 来源:网络整理
导读:最近突然对腾讯微博上的内容产生了兴趣,于是研究了腾讯微博的API,可是官方给的资料是在看不下去,无奈之下,找到了一个开源的类库,包括腾讯微博和新浪微博的接口,但是最令我纠结的是,这两种API无一例外地都需要在授权以后填写验证码,而这种验证码必须

最近突然对腾讯微博上的内容产生了兴趣,于是研究了腾讯微博的API,可是官方给的资料是在看不下去,无奈之下,找到了一个开源的类库,包括腾讯微博和新浪微博的接口,但是最令我纠结的是,这两种API无一例外地都需要在授权以后填写验证码,而这种验证码必须手动输入,无法用程序来获取,所以这条路只好放弃。怎么做呢,当然了分析源代码了,呵呵,这个不多说啦,直接上代码吧!

WebClient Client = new WebClient();
string webstring = Client.DownloadString(Url);//这里获取网页源码当然可以使用HttpWebRequest和HttpWebResponse啦,不过这种在这里貌似比较简单啦!
Regex r = new Regex(@"
http://t3.qpic.cn/mblogpic/([a-z|0-9]+?)/460");//这里可以根据网页的代码分析出来 ,但是不同的网页是不一样的,这个不知道是什么原因
MatchCollection m = r.Matches(webstring);
string[] src=new string[m.Count];
for (int i = 0; i <m.Count; i++)
{
string small = m[i].Groups[0].ToString();
int k = small.LastIndexOf("/") + 1;
small = small.Substring(0,k);
small = small + "2000";//如果你仔细研究过腾讯微博的图片,就会发现鼠标点击显示大图其实是把大图和小图分开储存的,小图是460,大图是2000
string filename = Application.StartupPath + @"images" + m[i].Groups[1].ToString() + ".jpg";
Client.DownloadFileAsync(new System.Uri(small),filename);
src[i]=Application.StartupPath + @"images" + m[i].Groups[1].ToString() + ".jpg";
}
return src;

一个问题:WebClient 不支持并发 I/O 操作

使用WebClinet可能会触发这个错误,这是因为一个webclient实例一次只能连到一个服务器,所以连第二个就会出错。用循环创建实例的方法可以解决,即需要在循环体内重新new WebClient.。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读