当前位置: 首页>>代码示例>>C#>>正文


C# WorkClass.getTotalComments方法代码示例

本文整理汇总了C#中WorkClass.getTotalComments方法的典型用法代码示例。如果您正苦于以下问题:C# WorkClass.getTotalComments方法的具体用法?C# WorkClass.getTotalComments怎么用?C# WorkClass.getTotalComments使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在WorkClass的用法示例。


在下文中一共展示了WorkClass.getTotalComments方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: weiboCnGrabComments

        // 测试weibo.cn,抓取所有评论,包含目标微博上的所有评论,以及目标在所有评论者上的评论
        static void weiboCnGrabComments(List<CookieContainer> ccList, string uid, int startPage, int endPage)
        {
            // http://weibo.cn/u/uid?page=N
            string ulogin = "http://weibo.cn/u/" + uid + "?page=";

            // 获取博主自身的所有评论,以及所有在评论中出现过的好友数据
            WorkClass maincs = new WorkClass();
            maincs.cc0 = ccList[0];
            maincs.cc1 = ccList[1];
            maincs.startPage = startPage;
            maincs.endPage = endPage;
            maincs.threadName = "启动线程";
            maincs.selfuid = uid;
            WeiboData weiboData = maincs.getTotalComments(ulogin, uid, null);
            Console.WriteLine("1. 搜索到博主评论条数:" + weiboData.comments.Count + ", 评论过的好友个数:" + weiboData.friends.Count);

            // 计算每个线程能分到的好友数量
            int friendsCount = weiboData.friends.Count;
            int threadCount = ccList.Count / 2;
            int n = friendsCount / threadCount;
            bool haveExt = (friendsCount % (ccList.Count / 2)) > 0; // 检查最后一个线程是否有额外的好友数据需要处理
            List<WeiboUser> friends = weiboData.friends.Values.ToList();
            List<Thread> threads = new List<Thread>();
            List<WorkClass> works = new List<WorkClass>();

            // 启动线程,开始抓取好友中的评论
            for (int i = 0; i < threadCount; i++)
            {
                WorkClass wc = new WorkClass();
                wc.cc0 = ccList[2 * i];
                wc.cc1 = ccList[2 * i + 1];
                wc.threadName = "线程" + i;
                wc.startPage = startPage;
                wc.endPage = endPage;
                wc.selfuid = uid;
                int start = n * i;
                int end = (n == (threadCount - 1)) ? friendsCount : n * (i + 1);
                for (int m = start; m < end; m++)
                {
                    wc.friends.Add(friends[m]);
                }
                Thread t = new Thread(new ParameterizedThreadStart(wc.Run));
                t.Name = "线程" + i;
                t.Start();
                works.Add(wc);
                threads.Add(t);
            }

            // 等待线程结束
            while (true)
            {
                bool end = true;
                for (var i = 0; i < threads.Count; i++)
                {
                    if (threads[i].ThreadState == ThreadState.Running)
                    {
                        end = false;
                        continue;
                    }
                    if (!works[i].end)
                    {
                        weiboData.comments.AddRange(works[i].comments);
                        works[i].end = true;
                    }
                }
                if (end)
                {
                    break;
                }
            }

            Console.WriteLine("搜索完成,共 " + weiboData.comments.Count + " 评论.");

            var s = "";
            foreach (var m in weiboData.comments)
            {
                s += m.toString() + "\n";
            }
            File.WriteAllText(uid + "-comment-" + startPage + "-" + endPage + ".txt", s);
        }
开发者ID:jsenter,项目名称:weiboSpider,代码行数:81,代码来源:Program.cs


注:本文中的WorkClass.getTotalComments方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。