一、前言
博客,这东西写起来是真的麻烦。博主语文特不好,什么语句、语义不通之类的,是常有的。请务必不要在意。如果,有什么问题可以在底下留言,或者私信我索要联系方式。另外,博主常年混迹java吧,在那肯定能找到我,贴吧ID:ZSsanguosha 。 转载,保留“全尸”就可以了,标明出处和作者,,其余随意。以上
博主邮箱的绑定了数据库预警系统,一响就代表采集系统崩了,已经响出阴影了。所以别问我要邮箱。
最后,本篇讲的是微博爬虫的中级实现,适用范围:中等规模使用,生产使用
二、介绍
微博在反爬虫的路上越走越远,反爬机制是一直在更新,如果嫌维护太累的话。可以考虑下正规渠道。微博商业接口(API)。官网首页:http://open.weibo.com/wiki/%E5%BE%AE%E5%8D%9AAPI
三、例子
批量获取指定微博的转发数评论数:http://open.weibo.com/wiki/2/statuses/count
以该接口举例
这是伪代码,大致意思是。用httpclient发送post请求,稍微修改下返回值。即可。 token,怎么获取,,自己去官网找教程
/**
* @Title: getCount
* @Description: TODO(获取单条微博的评论、转发、点赞数)
* @param mids 由多条mid组成(中间用“,”分割)
* @return
* List<JSONObject> 返回类型
*/
public List<JSONObject> getCount(String mids)
{
List<JSONObject> list = new ArrayList<>();
String url = "https://api.weibo.com/2/statuses/count.json";
List<PostParameter> nameValuePair = new ArrayList<PostParameter>();
nameValuePair.add(new PostParameter("access_token", token));
nameValuePair.add(new PostParameter("ids", mids));
PostParameter[] pp = nameValuePair.toArray(new PostParameter[nameValuePair.size()]);
try {
Response str = client.get(url, pp, token);
String[] source = str.getResponseAsString()
.replace("[", "").replace("]", "").split("},");
for (int i=0;i<source.length;i++){
String temp = source[i]+"}";
JSONObject json = new JSONObject(temp);
list.add(json);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
其余api,都是这样,官网说明已经很详细了,博主就不赘述了。
四、不足之处
1、频次有限制,无法大规模的使用
2、有时会出现不满足需求的情况(少字段)
五、总结
这篇没必要说太多,所有注意事项,都在官网写着。如果你们对微博数据方面。没有太大量级要求或者特殊需求。都可以用这个方法。