微信公众号历史文章采集

关于微信历史数据采集,步骤如下:
1.安装Nodejs和AnyProxy以及安装模拟器
第一步:nodejs下载地址:http://nodejs.cn/download/ 下载windows版本,直接运行安装即可。
第二步:anyproxy安装,按上一步安装好nodejs之后,直接在cmd运行 npm install -g anyproxy 即可安装。
第三步:anyproxy默认不会解析https,所以需要安装证书,在cmd命令下执行anyproxy --root,如果命令不能执行,则使用 anyproxy root也可以安装证书
微信公众号历史文章采集_第1张图片
第四步:执行anyproxy -i 命令,即可打开服务。
微信公众号历史文章采集_第2张图片
第五步:用浏览器访问http://localhost:8002/,并根据下图指示找到二维码。
微信公众号历史文章采集_第3张图片
第六步:安装安卓模拟器,安卓模拟器可选择夜神安装模拟器,直接百度搜索下载即可。安装好之后,先下载微信app。然后设置模拟器的代理,代理方式改为手动,代理ip为运行anyproxy机器的ip,端口是8001
微信公众号历史文章采集_第4张图片
第七步:根据http://localhost:8002/ 访问得到证书二维码,并截图,如第五步,将截图保存在安卓模拟器上,然后登陆微信扫描二维码,然后点击访问原网页,如下图。
微信公众号历史文章采集_第5张图片
第八步:点击“访问原网页”之后,安装证书,安装提示操作即可。
微信公众号历史文章采集_第6张图片
第九步:当出现下图“已安装XXX”提示时,则安装成功,安全警告可忽略。
微信公众号历史文章采集_第7张图片

  1. 如何使用Anyproxy采集微信数据

第一步:打开anyproxy中的一个叫rule_default.js的js文件,windows下该文件在:C:\Users\Administrator\AppData\Roaming\npm\node_modules\anyproxy\lib
第二步:找到beforeSendResponse(requestDetail, responseDetail)的方法,该方法是在你操作微信app或者其他软件时候,访问到的网络数据都会从这里拦截下来,也就是我们抓取到的数据。其中requestDetail参数,包括如下图的属性值,可以根据console.log()展现。其中requestDetail.response.header包括了我们爬取微信需要的参数,以及requestDetail.response.body返回的是数据值
微信公众号历史文章采集_第8张图片
第三步:拦截我们需要的方法以及将参数传入到我们自己的程序中。其中HttpPost的方法是自定义的
微信公众号历史文章采集_第9张图片
微信公众号历史文章采集_第10张图片
第四步:当微信程序执行时,将对应的参数信息传入到我们自己的程序,然后将对应的参数推送到redis中去。采集微信数据列表需要的参数cookie,pass_ticket,x-wechat-key,x-wechat-uin。采集微信文章阅读点赞数的参数appmsg_token,pass_ticket,cookie

微信公众号历史文章采集_第11张图片

第五步:爬取微信文章的数据接口如下,主页地址
https://mp.weixin.qq.com/mp/profile_ext?action=home"&__biz=MzAwODMyMDIyMg==&scene=124&devicetype=android-19&version=26051731&lang=zh_CN&nettype=WIFI&a8scene=3&pass_ticket=参数&wx_header=1 代码如下:
String wechartCookie01 = jedis.srandmember(“wechartCookie01”);
JSONObject o = (JSONObject) JSONObject.parse(wechartCookie01);
WechartCookie wechartCookie = JSONObject.toJavaObject(o, WechartCookie.class);
CloseableHttpClient https = HttpClients.createDefault();
String url = “https://mp.weixin.qq.com/mp/profile_ext?action=home”
+ “&__biz=MzAwODMyMDIyMg==”
+ “&scene=124&devicetype=android-19”
+ “&version=26051731&lang=zh_CN&nettype=WIFI&a8scene=3&pass_ticket=”
+ wechartCookie.getPass_ticket() + “&wx_header=1”;
HttpGet httpPost = new HttpGet(url);
httpPost.addHeader(“Host”, “mp.weixin.qq.com”);
httpPost.addHeader(“x-wechat-uin”, wechartCookie.getUin());
httpPost.addHeader(“x-wechat-key”, wechartCookie.getKey());
httpPost.addHeader(“User-Agent”,
“Mozilla/5.0 (Linux; Android 4.4.2; M688C Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 MicroMessenger/6.5.23.1180 NetType/WIFI Language/zh_CN”);
httpPost.addHeader(“Accept”, “text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8”);
httpPost.addHeader(“Cookie”, wechartCookie.getCookie());
httpPost.addHeader(“X-Requested-With”, “com.tencent.mm”);
HttpResponse response = https.execute(httpPost);
HttpEntity entitySort = response.getEntity();
String html = EntityUtils.toString(entitySort, “utf-8”);
if (html.split(“msgList”) != null && html.split(“msgList”).length > 1) {
String msglist = html.split(“msgList”)[1];
msglist = msglist.split("\n")[0];
msglist = msglist.substring(4, msglist.length() - 2);
msglist = msglist.replace(""", “”");
msglist = msglist.replace(“amp;”, “”);
JSONObject obj = JSONObject.parseObject(msglist);
String list = obj.getString(“list”);
JSONArray vlist = JSONArray.parseArray(list);
for (Object object : vlist) {
Wechart w1 = new Wechart();
obj = JSONObject.parseObject(object.toString());
JSONObject info = JSONObject.parseObject(obj.getString(“app_msg_ext_info”));
String title = info.getString(“title”);
String content_url = info.getString(“content_url”);
JSONObject info1 = JSONObject.parseObject(obj.getString(“comm_msg_info”));
String date = info1.getString(“datetime”) + “000”;
Date dates = new Date(Long.parseLong(date));
w1.setTitle(title);
w1.setUrl(content_url);
w1.setPubTime(dates);
wclist.add(w1);
// 头条新闻解析
JSONArray topArray = JSONArray.parseArray(info.getString(“multi_app_msg_item_list”));
for (Object object2 : topArray) {
Wechart w2 = new Wechart();
JSONObject topObj = (JSONObject) object2;
String topTitie = topObj.getString(“title”);
topTitie = topTitie.replace(""", “”");
String topUrl = topObj.getString(“content_url”);
w2.setTitle(topTitie);
w2.setUrl(topUrl);
w2.setPubTime(dates);
wclist.add(w2);
}
}
}

3.按键精灵的安装与使用
第一步:直接在百度上搜索安装“按键精灵”,下载即可,然后注册一个账号。
第二步:写好指定按键精灵使用脚本,先将我们要操作的标签通过按键精灵截图
微信公众号历史文章采集_第12张图片
第三步:代码操作介绍,如图
微信公众号历史文章采集_第13张图片
下图方法可能出现需要通过验证Attachment:\2.png的过程,需要调用此方法。
微信公众号历史文章采集_第14张图片
下图是判断是否有返回图片存在,有则单击跳转
微信公众号历史文章采集_第15张图片

你可能感兴趣的:(个人爬虫网站分类)