微信数据挖掘 图文数据获取

我们都知道微信后台针对图文分析只保存最近7天的数据,但这完全无法满足我们进行数据分析的需求,所以我稍做一番研究,具体笔记如下开发语言(C# Winform):

【设计效果:】


【后台代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Net;
using System.IO;

namespace gongzhonghao
{
    public partial class FormBase : Form
    {

        string appid = "";

        public FormBase()
        {
            InitializeComponent();
        }

        private void webBrowserWX_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            HtmlDocument wxPage = webBrowserWX.Document;
            string html = wxPage.Body.InnerHtml;
            if (html == null) return;
            if (html.Contains("第一次使用公众平台")){
                wxPage.Window.ScrollTo(615, 90);

                XmlDocument dom = new XmlDocument();
                dom.Load("config.xml");
                foreach (XmlElement account in dom.DocumentElement.ChildNodes)
                {
                    if (account.SelectSingleNode("title").InnerText == comboBoxAccount.SelectedText)
                    {
                        wxPage.GetElementById("account").InnerText = account.SelectSingleNode("username").InnerText;
                        wxPage.GetElementById("pwd").InnerText = account.SelectSingleNode("password").InnerText;
                        wxPage.GetElementById("loginBt").InvokeMember("click");
                    } 
                }
            }
            else if (html.Contains("总用户数"))
            {
                foreach (HtmlElement link in wxPage.Links)
                {
                    if (link.GetAttribute("href").Contains("/misc/pluginloginpage?action=stat_article_detail"))
                    { 
                        webBrowserWX.Navigate(link.GetAttribute("href"));
                       
                    }
                }
            }
            else if (html.Contains("腾讯云分析"))
            {
                buttonUpload.Enabled = true;
                button1.Enabled = true;
                button2.Enabled = true;
                button3.Enabled = true;
            }
            else if (html.Contains("hasMore"))
            {
                string ret = this.PostWebRequest("http://www.hqgq.com/api/weixin/mp.html", "appid="+ this.appid +"&data=" + html, Encoding.UTF8);
                MessageBox.Show("数据已上报!" + ret);
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.baidu.com");
            XmlDocument dom = new XmlDocument();
            dom.Load("config.xml");
            foreach (XmlElement account in dom.DocumentElement.ChildNodes)
            {
                comboBoxAccount.Items.Add(account.SelectSingleNode("title").InnerText);
                
            }
        }

        private void comboBoxAccount_SelectedIndexChanged(object sender, EventArgs e)
        {
            buttonUpload.Enabled = false;
            webBrowserWX.Navigate("https://mp.weixin.qq.com/cgi-bin/logout");
            XmlDocument dom = new XmlDocument();
            dom.Load("config.xml");
            foreach (XmlElement account in dom.DocumentElement.ChildNodes)
            {
                if (account.SelectSingleNode("title").InnerText == comboBoxAccount.SelectedItem.ToString())
                {
                    this.appid = account.SelectSingleNode("appid").InnerText; 
                }
            }
            
        }

        private void buttonUpload_Click(object sender, EventArgs e)
        {
           string url = "https://mta.qq.com/mta/wechat/ctr_article_detail/get_list?appid="+ this.appid+"&token=2014";
           webBrowserWX.Navigate(url);
        }

        private string PostWebRequest(string postUrl, string paramData, Encoding dataEncode)
        {
            string ret = string.Empty;
            try
            {
                byte[] byteArray = dataEncode.GetBytes(paramData); //转化
                HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
                webReq.Method = "POST";
                webReq.ContentType = "application/x-www-form-urlencoded";

                webReq.ContentLength = byteArray.Length;
                Stream newStream = webReq.GetRequestStream();
                newStream.Write(byteArray, 0, byteArray.Length);//写入参数
                newStream.Close();
                HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
                StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.Default);
                ret = sr.ReadToEnd();
                sr.Close();
                response.Close();
                newStream.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            return ret;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string url = "https://mta.qq.com/mta/wechat/ctr_article_detail/get_list?appid=" + this.appid + "&token=2014&page=2";
            webBrowserWX.Navigate(url);

        }

        private void button2_Click(object sender, EventArgs e)
        {
            string url = "https://mta.qq.com/mta/wechat/ctr_article_detail/get_list?appid=" + this.appid + "&token=2014&page=3";
            webBrowserWX.Navigate(url);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            string url = "https://mta.qq.com/mta/wechat/ctr_article_detail/get_list?appid=" + this.appid + "&token=2014&page=7";
            webBrowserWX.Navigate(url);
        }
    }
}




 

【config.xml 文件 放于目录bin/Debug/config.xml 下】

<?xml version="1.0" encoding="utf-8" ?>
<account>
  <item>
    <title>微信A</title>
    <username>账号A</username>
    <password>密码A</password>
    <appid>appid_A</appid>
  </item>
  <item>
    <title>微信B</title>
    <username>账号B</username>
    <password>密码B</password>
    <appid>appid_B</appid>
  </item>
</account>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值