详细Java批量获取微信公众号方法(3)
发布时间:2021-02-21 17:01 所属栏目:12 来源:网络整理
导读:处理公众号历史页数据方法: public void getMsgJson(String str,String url) throws UnsupportedEncodingException { // TODO Auto-generated method stub String biz = ""; MapString,String queryStrs = HttpUrl
处理公众号历史页数据方法: public void getMsgJson(String str,String url) throws UnsupportedEncodingException { // TODO Auto-generated method stub String biz = ""; Map<String,String> queryStrs = HttpUrlParser.parseUrl(url); if(queryStrs != null){ biz = queryStrs.get("__biz"); biz = biz + "=="; } /** * 从数据库中查询biz是否已经存在,如果不存在则插入, * 这代表着我们新添加了一个采集目标公众号。 */ List<WeiXin> results = weiXinMapper.selectByBiz(biz); if(results == null || results.size() == 0){ WeiXin weiXin = new WeiXin(); weiXin.setBiz(biz); weiXin.setCollect(System.currentTimeMillis()); weiXinMapper.insert(weiXin); } //System.out.println(str); //解析str变量 List<Object> lists = JsonPath.read(str,"['list']"); for(Object list : lists){ Object json = list; int type = JsonPath.read(json,"['comm_msg_info']['type']"); if(type == 49){//type=49表示是图文消息 String content_url = JsonPath.read(json,"$.app_msg_ext_info.content_url"); content_url = content_url.replace("\\","").replaceAll("amp;","");//获得图文消息的链接地址 int is_multi = JsonPath.read(json,"$.app_msg_ext_info.is_multi");//是否是多图文消息 Integer datetime = JsonPath.read(json,"$.comm_msg_info.datetime");//图文消息发送时间 /** * 在这里将图文消息链接地址插入到采集队列库tmplist中 * (队列库将在后文介绍,主要目的是建立一个批量采集队列, * 另一个程序将根据队列安排下一个采集的公众号或者文章内容) */ try{ if(content_url != null && !"".equals(content_url)){ TmpList tmpList = new TmpList(); tmpList.setContentUrl(content_url); tmpListMapper.insertSelective(tmpList); } }catch(Exception e){ System.out.println("队列已存在,不插入!"); } /** * 在这里根据$content_url从数据库post中判断一下是否重复 */ List<Post> postList = postMapper.selectByContentUrl(content_url); boolean contentUrlExist = false; if(postList != null && postList.size() != 0){ contentUrlExist = true; } if(!contentUrlExist){//'数据库post中不存在相同的$content_url' Integer fileid = JsonPath.read(json,"$.app_msg_ext_info.fileid");//一个微信给的id String title = JsonPath.read(json,"$.app_msg_ext_info.title");//文章标题 String title_encode = URLEncoder.encode(title,"utf-8"); String digest = JsonPath.read(json,"$.app_msg_ext_info.digest");//文章摘要 String source_url = JsonPath.read(json,"$.app_msg_ext_info.source_url");//阅读原文的链接 source_url = source_url.replace("\\",""); String cover = JsonPath.read(json,"$.app_msg_ext_info.cover");//封面图片 cover = cover.replace("\\",""); /** * 存入数据库 */ // System.out.println("头条标题:"+title); // System.out.println("微信ID:"+fileid); // System.out.println("文章摘要:"+digest); // System.out.println("阅读原文链接:"+source_url); // System.out.println("封面图片地址:"+cover); Post post = new Post(); post.setBiz(biz); post.setTitle(title); post.setTitleEncode(title_encode); post.setFieldId(fileid); post.setDigest(digest); post.setSourceUrl(source_url); post.setCover(cover); post.setIsTop(1);//标记一下是头条内容 post.setIsMulti(is_multi); post.setDatetime(datetime); post.setContentUrl(content_url); postMapper.insert(post); } if(is_multi == 1){//如果是多图文消息 List<Object> multiLists = JsonPath.read(json,"['app_msg_ext_info']['multi_app_msg_item_list']"); for(Object multiList : multiLists){ Object multiJson = multiList; content_url = JsonPath.read(multiJson,"['content_url']").toString().replace("\\","");//图文消息链接地址 /** * 这里再次根据$content_url判断一下数据库中是否重复以免出错 */ contentUrlExist = false; List<Post> posts = postMapper.selectByContentUrl(content_url); if(posts != null && posts.size() != 0){ contentUrlExist = true; } if(!contentUrlExist){//'数据库中不存在相同的$content_url' /** * 在这里将图文消息链接地址插入到采集队列库中 * (队列库将在后文介绍,主要目的是建立一个批量采集队列, * 另一个程序将根据队列安排下一个采集的公众号或者文章内容) */ if(content_url != null && !"".equals(content_url)){ TmpList tmpListT = new TmpList(); tmpListT.setContentUrl(content_url); tmpListMapper.insertSelective(tmpListT); } String title = JsonPath.read(multiJson,"$.title"); String title_encode = URLEncoder.encode(title,"utf-8"); Integer fileid = JsonPath.read(multiJson,"$.fileid"); String digest = JsonPath.read(multiJson,"$.digest"); String source_url = JsonPath.read(multiJson,"$.source_url"); source_url = source_url.replace("\\",""); String cover = JsonPath.read(multiJson,"$.cover"); cover = cover.replace("\\",""); // System.out.println("标题:"+title); // System.out.println("微信ID:"+fileid); // System.out.println("文章摘要:"+digest); // System.out.println("阅读原文链接:"+source_url); // System.out.println("封面图片地址:"+cover); Post post = new Post(); post.setBiz(biz); post.setTitle(title); post.setTitleEncode(title_encode); post.setFieldId(fileid); post.setDigest(digest); post.setSourceUrl(source_url); post.setCover(cover); post.setIsTop(0);//标记一下不是头条内容 post.setIsMulti(is_multi); post.setDatetime(datetime); post.setContentUrl(content_url); postMapper.insert(post); } } } } } }
(编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读