爬虫-微信公众平台消息获取

帮朋友抓取微信公众平台的用户评论信息。

下面只说核心的部分,怎么获取评论信息。

查看HTML代码,没有发现关于评论部分的标签。看来是用JS动态生成的,但是查找ajax请求也没有找到哪里有返回数据。

最后搜索一下,原来是在这里,很直白的写在了JS里:

   <script type="text/javascript">
        wx.cgiData = {
            total_count : 91,
            latest_msg_id : ‘200325222‘,
            count : "20"*1 || 20,
            day : "7",
            frommsgid : "",
            can_search_msg : "1",
            offset : "",
            action : "",
            keyword : "",
            list : ({"msg_item":[{"id":200322761,"type":1,"fakeid":"593656935","nick_name":"Suang?1","date_time":1398854675,"content":"记得帮我查一下是不是这个电话!","source":"","msg_status":4,"has_reply":0,"refuse_reason":"","multi_item":[],"to_uin":3071594631,"send_stat":{"total":0,"succ":0,"fail":0}},{"id":200322760,"type":2,"fakeid":"593656935","nick_name":"Suang?1","date_time":1398854664,"source":"","msg_status":4,"has_reply":0,"refuse_reason":"","multi_item":[],"to_uin":3071594631,"send_stat":{"total":0,"succ":0,"fail":0}},{"id":200322759,"type":1,"fakeid":"593656935","nick_name":"Suang?1","date_time":1398854659,"content":"勐璇,我看到那人了!","source":"","msg_status":4,"has_reply":0,"refuse_reason":"","multi_item":[],"to_uin":3071594631,"send_stat":{"total":0,"succ":0,"fail":0}},{"id":200322344,"type":2,"fakeid":"1994400010","nick_name":"ABC的CBA","date_time":1398839849,"source":"","msg_status":4,"has_reply":0,"refuse_reason":"","multi_item":[],"to_uin":3071594631,"send_stat":{"total":0,"succ":0,"fail":0}},{"id":200321209,"type":1,"fakeid":"1591078101","nick_name":"倚(纺织服装)","date_time":1398788906,"content":"\/::<","source":"","msg_status":4,"has_reply":0,"refuse_reason":"","multi_item":[],"to_uin":3071594631,"send_stat":{"total":0,"succ":0,"fail":0}},{"id":200321206,"type":2,"fakeid":"1591078101","nick_name":"倚(纺织服装)","date_time":1398788859,"source":"","msg_status":4,"has_reply":1,"refuse_reason":"","multi_item":[],"to_uin":3071594631,"send_stat":{"total":0,"succ":0,"fail":0}},

用的是JSON格式,代码太乱,放在Eclipse里格式化一下,消息列表大概就是这个样了:

{"msg_item" :[ {
	"id" : 200322761,
	"type" : 1,
	"fakeid" : "593656935",
	"nick_name" : "Suang?1",
	"date_time" : 1398854675,
	"content" : "记得帮我查一下是不是这个电话!",
	"source" : "",
	"msg_status" : 4,
	"has_reply" : 0,
	"refuse_reason" : "",
	"multi_item" : [],
	"to_uin" : 3071594631,
	"send_stat" : {
		"total" : 0,
		"succ" : 0,
		"fail" : 0
	}
}, {
	"id" : 200322760,
	"type" : 2,
	"fakeid" : "593656935",
	"nick_name" : "Suang?1",
	"date_time" : 1398854664,
	"source" : "",
	"msg_status" : 4,
	"has_reply" : 0,
	"refuse_reason" : "",
	"multi_item" : [],
	"to_uin" : 3071594631,
	"send_stat" : {
		"total" : 0,
		"succ" : 0,
		"fail" : 0
	}
}
]
}

上面就是 json字符串 中 msg_item 所对应的列表里的对象。

可以看出这个是一个数组,每个评论是里面的一个对象。怎么生成对于的Java类呢 ?

这里有一个在线的工具:http://jsongen.byingtondesign.com/

可以根据JSON 字符串,生成对应的java类:

类1

import java.util.List;

public class MessageList{
    private List<Message> msg_item;

	public List<Message> getMsg_item() {
		return msg_item;
	}

	public void setMsg_item(List<Message> msgItem) {
		msg_item = msgItem;
	}

}

类2。部分字段没有用,删掉了

public class Message {

	private String content;
	private long date_time;
	private String fakeid;
	private int has_reply;
	private long id;
	private int msg_status;
	private String nick_name;
	private String refuse_reason;
	private String source;
	private long to_uin;
	private int type;
// get set 略去
}

下面来做个测试。用google的 Gson 来进行处理,把json字符串解析为 java对象。

//jsonstr 为 msg_item 的json字符串
		MessageList msgList = new Gson().fromJson(jsonstr, MessageList.class);
		System.out.println(msgList.getMsg_item().size());

解析成功。所有的对象都在 msgList里了

爬虫-微信公众平台消息获取,码迷,mamicode.com

时间: 2024-10-12 03:44:05

爬虫-微信公众平台消息获取的相关文章

微信公众平台消息接口开发(32)空气质量指数查询

原文:微信公众平台消息接口开发(32)空气质量指数查询 微信公众平台开发 微信公众平台开发者 微信公众平台开发模式 空气质量指数 PM2.5 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/archive/2013/05/30/weixin-if32-air-quality.html 一.获取原版数据 在中国环境监测总站http://www.cnemc.cn/ 可以找到全国城市空气质量实时发布平台,其地址为 http://113.108.142.147:20

微信公众平台消息接口开发 小黄鸡(小贱鸡)机器人 微信公众平台 公众号聊天机器人 ,消息,接口,小黄鸡,小贱鸡,机器人

第一部分 基于模拟请求的方式 一.模拟请求数据 先看一下小黄鸡的网页版界面 我们通过模拟http请求来实现,上面对话抓包如下: 发送消息的包 接收消息的包: 根据上面的包,模拟发起请求如下: 二.与微信对接 小黄鸡还可以使用API方式调用,但免费时间有限,代码和上面基本一样,就不多写了. 三.演示效果 第二部分 基于接口的方式 一.申请小黄鸡接口SimSimi,发音为〝shim-shimee〞,中文翻译:小黄鸡,由韩文simsim(??)演变而成. “??”原意为“无聊”.SimSimi 由IS

微信公众平台消息接口开发-封装weixin.class.php(转)

一.封装weixin.class.php 由于微信公众平台的通信使用的是特定格式的XML数据,每次接受和回复都要去做一大堆的数据处理. 我们就考虑在这个基础上做一次封装,weixin.class.php,代码如下: <?php class Weixin {     public $token = '';//token     public $debug =  false;//是否debug的状态标示,方便我们在调试的时候记录一些中间数据     public $setFlag = false;

微信公众平台网页获取用户OpenID方法

下面我们一起来看看关于微信公众平台网页获取用户OpenID方法,有需要了解的朋友可以一起来看看吧.用户点击微信自定义菜单view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值 (即网页链接),达到打开网页的目的,但是view不能获取用户的openid,需要使用微信“网页授权获取用户基本信息”高级接口结合使用,获得用户的登入个人信息.具体方法1.配置网页授权回调域名,如 www.111cn.net2.模拟公众号的第三方网页,http://www.111cn.net/getcodeurl

微信公众平台消息接口开发-封装weixin.class.php

原文:微信公众平台消息接口开发-封装weixin.class.php 一.封装weixin.class.php 由于微信公众平台的通信使用的是特定格式的XML数据,每次接受和回复都要去做一大堆的数据处理. 我们就考虑在这个基础上做一次封装,weixin.class.php,代码如下: <?php class Weixin {     public $token = '';//token     public $debug =  false;//是否debug的状态标示,方便我们在调试的时候记录一

微信公众平台消息接口PHP版开发教程

原文:微信公众平台消息接口PHP版开发教程  一.写好接口程序 在你的服务器上上传好一个接口程序文件,如http://www.yourdomain.com/weixin.php  内容如下: <?php define("TOKEN", "weixin");//自己定义的token 就是个通信的私钥 $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid(); //$wechatObj-&

微信公众平台开发--获取用户基本信息

本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称.头像.性别.国家.省份.城市.语言.本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录. 在本文中,特别要注意的是有两个不同的Access Token,他们产生的方式不一样,一种是使用AppID和AppSecret获取的access_token,一种是OAuth2.0授权中产生的access_token,方倍工作室分别称为全局Access Token和授权Access

微信公众平台新增获取自动回复和自定义菜单配置接口

微信公众平台自动回复功能可以为运营者减少了重复回复消息的次数,但如果自动回复的数量多的话管理就比较麻烦:自定义菜单相当于你这个公众号的导航,但有些公众号会限制不能添加外部链接.现在好了,公众平台开发者接口更新,新增获取自动回复和自定义菜单配置接口,对所有公众号开放. 新增的接口具体是: 1. 获取自动回复规则接口 该接口可以获取公众号设置的自动回复规则,包括关注后自动回复.消息自动回复和关键词自动回复. 开发者可以通过该接口,获取公众号当前使用的自动回复规则,包括关注后自动回复.消息自动回复(6

微信公众平台消息体加解密实现

一.消息体加解密 微信公众平台在配置服务器时,提供了3种加解密的模式供开发者选择,即明文模式.兼容模式.安全模式,选择兼容模式和安全模式前,需在开发者中心填写消息加解密密钥EncodingAESKey. 明文模式:维持现有模式,没有适配加解密新特性,消息体明文收发,默认设置为明文模式 兼容模式:公众平台发送消息内容将同时包括明文和密文,消息包长度增加到原来的3倍左右:公众号回复明文或密文均可,不影响现有消息收发:开发者可在此模式下进行调试 安全模式(推荐):公众平台发送消息体的内容只含有密文,公