コード例 #1
0
        public static void LoadCollectionIDsFormFile()
        {
            string filePath = System.Environment.CurrentDirectory + @"\CollectionID.txt";

            if (File.Exists(filePath))
            {
                string fileStr = File.ReadAllText(filePath);
                IEnumerable <CollectionInfo> infos = CollectionDB.GetAllCollectionInfos().ToList();
                foreach (var ci in infos)
                {
                    fileStr = fileStr.Replace(ci.CollectionID.ToString() + ":" + ci.QuestionCount, "");
                }
                string[] collectionIds = fileStr.Replace(";", "|").Split('|');
                foreach (string id in collectionIds)
                {
                    if (!String.IsNullOrEmpty(id))
                    {
                        string[]       ids = id.Split(':');
                        CollectionInfo ci  = CollectionDB.GetCollectionInfoById(ids[0]);
                        if (ci != null)
                        {
                            ci.QuestionCount = int.Parse(ids[1]);
                            CollectionDB.SaveOrUpdateCollectionInfo(ci);
                        }
                        else
                        {
                            string url = string.Format(CollectionInfoBaseUrl, ids[0]);
                            GetCollectionInfoFormHtml(BusinessUtils.GetByUrl(url), ids[0]);
                        }
                    }
                }
            }
        }
コード例 #2
0
        public static bool GetQuestionListByPage(int pageNo)
        {
            bool   result = false;
            string url    = String.Format(questionPageUrl, pageNo);

            GetQuestionInfoFormHtml(BusinessUtils.GetByUrl(url));
            return(result);
        }
コード例 #3
0
 public static void GetCollectionAnswerInfos(CollectionInfo ci)
 {
     if (CollectionDB.GetAnswerCountByCollectionId(ci.CollectionID.ToString()) != ci.QuestionCount)
     {
         int count = GetCollectionPageCount(ci);
         ci.QuestionCount = count;
         CollectionDB.SaveOrUpdateCollectionInfo(ci);
         for (int i = count; i >= 1; i--)
         {
             string url = string.Format(CollectionInfoAnswerUrl, ci.CollectionID, i);
             GetCollectionAnswerInfoFromHtml(BusinessUtils.GetByUrl(url), ci);
             Thread.Sleep(1000 * 5);
         }
     }
 }
コード例 #4
0
        public static void RefreshQuestionPageCount()
        {
            Console.WriteLine("更新问题总页数于" + DateTime.Now.ToString() + "开始");
            string result = BusinessUtils.GetByUrl(questionPageCountUrl);

            if (!String.IsNullOrWhiteSpace(result))
            {
                try
                {
                    HtmlDocument doc = new HtmlDocument();
                    doc.LoadHtml(result);
                    List <HtmlNode> rootNode = doc.DocumentNode.SelectNodes(@"//div[@class='zm-invite-pager']").ToList();
                    int             count    = 0;
                    List <HtmlNode> nodes    = rootNode[0].ChildNodes.ToList();
                    nodes.RemoveAll(p => p.InnerText.Replace("\n", "") == "");
                    if (nodes.Count == 7)
                    {
                        HtmlNode countNode = nodes[5];
                        count = int.Parse(countNode.FirstChild.InnerText);
                    }
                    else
                    {
                        foreach (var node in nodes)
                        {
                            if (node.InnerHtml.Contains("下一页"))
                            {
                                HtmlNode countNode = nodes[nodes.IndexOf(node) - 1];
                                count = int.Parse(countNode.FirstChild.InnerText);
                            }
                        }
                    }
                    SysDictDB.SaveOrUpdateQuestionCount(count);
                    Console.WriteLine("更新问题总页数于" + DateTime.Now.ToString() + "成功,目前问题总页数为" + count);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("更新问题总页数于" + DateTime.Now.ToString() + "失败,失败原因:" + ex.Message);
                }
            }
            else
            {
                Console.WriteLine("更新问题总页数于" + DateTime.Now.ToString() + "失败,失败原因:没有获取到数据。");
            }
        }
コード例 #5
0
        public static int GetCollectionPageCount(CollectionInfo ci)
        {
            int    pageCount = 0;
            string url       = string.Format(CollectionInfoBaseUrl, ci.CollectionID);
            string res       = BusinessUtils.GetByUrl(url);

            if (!String.IsNullOrWhiteSpace(res))
            {
                try
                {
                    HtmlDocument doc = new HtmlDocument();
                    doc.LoadHtml(res);
                    List <HtmlNode> rootNode = doc.DocumentNode.SelectNodes(@"//div[@class='zm-invite-pager']").ToList();
                    List <HtmlNode> nodes    = rootNode[0].ChildNodes.ToList();
                    nodes.RemoveAll(p => p.InnerText.Replace("\n", "") == "");
                    if (nodes.Count == 7)
                    {
                        HtmlNode countNode = nodes[5];
                        pageCount = int.Parse(countNode.FirstChild.InnerText);
                    }
                    else
                    {
                        foreach (var node in nodes)
                        {
                            if (node.InnerHtml.Contains("下一页"))
                            {
                                HtmlNode countNode = nodes[nodes.IndexOf(node) - 1];
                                pageCount = int.Parse(countNode.FirstChild.InnerText);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                }
            }
            return(pageCount);
        }