系列目录:
JAVA微博爬虫基础篇——简单的微博爬虫(手动cookie)
JAVA微博爬虫高级篇——自动获取微博cookie(无须账号、每日百万量级)
一、前言
文章这东西写起来是真的麻烦。我语文特不好,什么语句、语义不通之类的是常有的,请务必不要在意(你们在意也没用)。 我第一次用markdown写点东西,打算试试水,因此排版方面会比较乱。
语文不行,排版不行,写这些话的时候我自己都在想:“那你写这东西干嘛?直接放代码不是更方便?”。 人嘛,总是要试试的,不试过怎么知道你自己就是不行。
最后,本篇讲的是微博爬虫的中级实现,适用范围:中等规模使用,生产使用
二、介绍
微博在反爬虫的路上越走越远,反爬机制是一直在更新,如果嫌维护太累的话。可以考虑下正规渠道。微博商业接口(API)。官网首页:open.weibo.com/wiki/微博API
三、例子
批量获取指定微博的转发数评论数:open.weibo.com/wiki/2/stat…
以该接口举例
这是伪代码,大致意思是。用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都是这样,官网说明已经很详细了,我就不赘述了。实在搞不定的话官网有客服和sdk,你可以试着求助下他们
四、不足之处
1、频次有限制,无法大规模的使用
2、有时会出现不满足需求的情况(少字段)
五、总结
这篇没必要说太多,所有注意事项都在官网写着。如果你们对微博数据方面,没有太大量级要求或者特殊需求,都可以用这个方法。