JAVA微博爬虫中级篇——商业接口(无须cookie)

系列目录:

JAVA微博爬虫基础篇——简单的微博爬虫(手动cookie)

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、有时会出现不满足需求的情况(少字段)

五、总结

这篇没必要说太多,所有注意事项都在官网写着。如果你们对微博数据方面,没有太大量级要求或者特殊需求,都可以用这个方法。

猜你喜欢

转载自juejin.im/post/5e63e833e51d45271210580e