微信小程序监控 – HotApp统计

HotApp小序统计,第一单标准的微信第三着小序监控统计工具

供销社编辑妹子需要爬取网页内容,叫我帮忙做了平简练的爬取工具

1.啊是HotApp小程序统计

HotApp小程序统计是率先只微信第三正小程序统计工具,就像做android 和
ios开发之人知道友盟统计一样,小程序为亟需发个统计工具。

经这家伙,可以了解有些程序的每天新增,每日开行次数,总用户,每天的龙腾虎跃用户,很多总人口或就会说,微信已经提供了,那还待这家伙做呀?

以微信只能见到前一天之骤增用户,启动次数等于数据,而当日底数,微信的统计还未能够提供。

 HotApp小序统计 网址:https://weixin.hotapp.cn

葡京赌场网址 1

葡京赌场网址 2

2.HotApp小序到底可以举行什么统计为

就是爬取网页内容,像是随即对准大家吧都是不难得,但是于此地发出局部稍改变,代码献上,大家参考

(1)统计概况,可以实时查看小序的,新增,活跃,启动,累计用户
 1 private string GetHttpWebRequest(string url)  
 2        {  
 3            HttpWebResponse result;  
 4            string strHTML = string.Empty;  
 5            try  
 6            {  
 7                Uri uri = new Uri(url);  
 8                WebRequest webReq = WebRequest.Create(uri);  
 9                WebResponse webRes = webReq.GetResponse();  
10   
11                HttpWebRequest myReq = (HttpWebRequest)webReq;  
12                myReq.UserAgent = "User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705";  
13                myReq.Accept = "*/*";  
14                myReq.KeepAlive = true;  
15                myReq.Headers.Add("Accept-Language", "zh-cn,en-us;q=0.5");  
16                result = (HttpWebResponse)myReq.GetResponse();  
17                Stream receviceStream = result.GetResponseStream();  
18                StreamReader readerOfStream = new StreamReader(receviceStream, System.Text.Encoding.GetEncoding("utf-8"));  
19                strHTML = readerOfStream.ReadToEnd();  
20                readerOfStream.Close();  
21                receviceStream.Close();  
22                result.Close();  
23            }  
24            catch  
25            {  
26                Uri uri = new Uri(url);  
27                WebRequest webReq = WebRequest.Create(uri);  
28                HttpWebRequest myReq = (HttpWebRequest)webReq;  
29                myReq.UserAgent = "User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705";  
30                myReq.Accept = "*/*";  
31                myReq.KeepAlive = true;  
32                myReq.Headers.Add("Accept-Language", "zh-cn,en-us;q=0.5");  
33                //result = (HttpWebResponse)myReq.GetResponse();  
34                try  
35                {  
36                    result = (HttpWebResponse)myReq.GetResponse();  
37                }  
38                catch (WebException ex)  
39                {  
40                    result = (HttpWebResponse)ex.Response;  
41                }  
42                Stream receviceStream = result.GetResponseStream();  
43                StreamReader readerOfStream = new StreamReader(receviceStream, System.Text.Encoding.GetEncoding("gb2312"));  
44                strHTML = readerOfStream.ReadToEnd();  
45                readerOfStream.Close();  
46                receviceStream.Close();  
47                result.Close();  
48            }  
49            return strHTML;  
50        }  
(2)自定义事件 ,可以打定义统计事件,通过统计用户点击不同的按钮来分析用户是否爱某些意义

 

(3)留存分析 ,分析用户之明存在,周留存,月留存

  这是根据url爬取网页远啊,有一些粗改变,很多网页有异之编码格式,甚至小网站开了反而爬取的防护,这个点子通过能够转移呢会爬去

(4)用户分析,通过波漏斗来分析用户之所作所为,方便运营查看运营效益

葡京赌场网址 3

(5)其它力量要机型分析,区域分析,用户画像,HotApp会陆续支持

以下是爬取网页所有的网址链接

3 HotApp统计与微信统计功能对比图

功能 HotApp小程序统计 微信自带统计
实时查看 当日查看 不支持(第二天才能查看今日数据)
新增用户 支持 支持
留存分析 支持 不支持
关键指标漏斗分析 支持 不支持
自定义事件 支持 不支持
微信登录 支持(不需自写后台) 支持(需要后台参与)
多人查看后台 支持 不支持(只有管理员)
访问人数 支持 支持
访问次数(所有页面) 不支持 支持
打开次数 支持 支持
分渠道统计 待支持(功能研发中) 不支持
/// <summary>  
        /// 提取HTML代码中的网址  
        /// </summary>  
        /// <param name="htmlCode"></param>  
        /// <returns></returns>  
        private static List<string> GetHyperLinks(string htmlCode, string url)  
        {  
            ArrayList al = new ArrayList();  
            bool IsGenxin = false;  
            StringBuilder weburlSB = new StringBuilder();//SQL  
            StringBuilder linkSb = new StringBuilder();//展示数据  
            List<string> Weburllistzx = new List<string>();//新增  
            List<string> Weburllist = new List<string>();//旧的  
            string ProductionContent = htmlCode;  
            Regex reg = new Regex(@"http(s)?://([\w-]+\.)+[\w-]+/?");  
            string wangzhanyuming = reg.Match(url, 0).Value;  
            MatchCollection mc = Regex.Matches(ProductionContent.Replace("href=\"/", "href=\"" + wangzhanyuming).Replace("href='/", "href='" + wangzhanyuming).Replace("href=/", "href=" + wangzhanyuming).Replace("href=\"./", "href=\"" + wangzhanyuming), @"<[aA][^>]* href=[^>]*>", RegexOptions.Singleline);  
            int Index = 1;  
            foreach (Match m in mc)  
            {  
                MatchCollection mc1 = Regex.Matches(m.Value, @"[a-zA-z]+://[^\s]*", RegexOptions.Singleline);  
                if (mc1.Count > 0)  
                {  
                    foreach (Match m1 in mc1)  
                    {  
                        string linkurlstr = string.Empty;  
                        linkurlstr = m1.Value.Replace("\"", "").Replace("'", "").Replace(">", "").Replace(";", "");  
                        weburlSB.Append("$-$");  
                        weburlSB.Append(linkurlstr);  
                        weburlSB.Append("$_$");  
                        if (!Weburllist.Contains(linkurlstr) && !Weburllistzx.Contains(linkurlstr))  
                        {  
                            IsGenxin = true;  
                            Weburllistzx.Add(linkurlstr);  
                            linkSb.AppendFormat("{0}<br/>", linkurlstr);  
                        }  
                    }  
                }  
                else  
                {  
                    if (m.Value.IndexOf("javascript") == -1)  
                    {  
                        string amstr = string.Empty;  
                        string wangzhanxiangduilujin = string.Empty;  
                        wangzhanxiangduilujin = url.Substring(0, url.LastIndexOf("/") + 1);  
                        amstr = m.Value.Replace("href=\"", "href=\"" + wangzhanxiangduilujin).Replace("href='", "href='" + wangzhanxiangduilujin);  
                        MatchCollection mc11 = Regex.Matches(amstr, @"[a-zA-z]+://[^\s]*", RegexOptions.Singleline);  
                        foreach (Match m1 in mc11)  
                        {  
                            string linkurlstr = string.Empty;  
                            linkurlstr = m1.Value.Replace("\"", "").Replace("'", "").Replace(">", "").Replace(";", "");  
                            weburlSB.Append("$-$");  
                            weburlSB.Append(linkurlstr);  
                            weburlSB.Append("$_$");  
                            if (!Weburllist.Contains(linkurlstr) && !Weburllistzx.Contains(linkurlstr))  
                            {  
                                IsGenxin = true;  
                                Weburllistzx.Add(linkurlstr);  
                                linkSb.AppendFormat("{0}<br/>", linkurlstr);  
                            }  
                        }  
                    }  
                }  
                Index++;  
            }  
            return Weburllistzx;  
        }  

这块的技巧其实就算是简单的使用了正要则去匹配!接下去献上取得标题,以及存储到xml文件之法子

 1 /// <summary>  
 2         /// // 把网址写入xml文件  
 3         /// </summary>  
 4         /// <param name="strURL"></param>  
 5         /// <param name="alHyperLinks"></param>  
 6         private static void WriteToXml(string strURL, List<string> alHyperLinks)  
 7         {  
 8             XmlTextWriter writer = new XmlTextWriter(@"D:\HyperLinks.xml", Encoding.UTF8);  
 9             writer.Formatting = Formatting.Indented;  
10             writer.WriteStartDocument(false);  
11             writer.WriteDocType("HyperLinks", null, "urls.dtd", null);  
12             writer.WriteComment("提取自" + strURL + "的超链接");  
13             writer.WriteStartElement("HyperLinks");  
14             writer.WriteStartElement("HyperLinks", null);  
15             writer.WriteAttributeString("DateTime", DateTime.Now.ToString());  
16             foreach (string str in alHyperLinks)  
17             {  
18                 string title = GetDomain(str);  
19                 string body = str;  
20                 writer.WriteElementString(title, null, body);  
21             }  
22             writer.WriteEndElement();  
23             writer.WriteEndElement();  
24             writer.Flush();  
25             writer.Close();  
26         }  
27         /// <summary>  
28         /// 获取网址的域名后缀  
29         /// </summary>  
30         /// <param name="strURL"></param>  
31         /// <returns></returns>  
32         private static string GetDomain(string strURL)  
33         {  
34             string retVal;  
35             string strRegex = @"(\.com/|\.net/|\.cn/|\.org/|\.gov/)";  
36             Regex r = new Regex(strRegex, RegexOptions.IgnoreCase);  
37             Match m = r.Match(strURL);  
38             retVal = m.ToString();  
39             strRegex = @"\.|/$";  
40             retVal = Regex.Replace(retVal, strRegex, "").ToString();  
41             if (retVal == "")  
42                 retVal = "other";  
43             return retVal;  
44         }  
45 /// <summary>  
46         /// 获取标题  
47         /// </summary>  
48         /// <param name="html"></param>  
49         /// <returns></returns>  
50         private static string GetTitle(string html)  
51         {  
52             string titleFilter = @"<title>[\s\S]*?</title>";  
53             string h1Filter = @"<h1.*?>.*?</h1>";  
54             string clearFilter = @"<.*?>";  
55   
56             string title = "";  
57             Match match = Regex.Match(html, titleFilter, RegexOptions.IgnoreCase);  
58             if (match.Success)  
59             {  
60                 title = Regex.Replace(match.Groups[0].Value, clearFilter, "");  
61             }  
62   
63             // 正文的标题一般在h1中,比title中的标题更干净  
64             match = Regex.Match(html, h1Filter, RegexOptions.IgnoreCase);  
65             if (match.Success)  
66             {  
67                 string h1 = Regex.Replace(match.Groups[0].Value, clearFilter, "");  
68                 if (!String.IsNullOrEmpty(h1) && title.StartsWith(h1))  
69                 {  
70                     title = h1;  
71                 }  
72             }  
73             return title;  
74         }  

马上就是所用的整个法,还是时有发生那么些欲改良之远在!大家要产生觉察不足之处还请求指出,谢谢!

出趣味可以进入企鹅群一起上学:495104593葡京赌场网址

 源码送及:http://download.csdn.net/detail/nightmareyan/9584256