Example #1
0
        public static CaseDB Create()
        {
            CaseDB db = new CaseDB();

            db.ConnectString = ConfigurationManager.ConnectionStrings["main"].ConnectionString;
            return(db);
        }
Example #2
0
        public void InsertDayLog(DateTime date, int dayCount)
        {
            string strdate = date.ToString("yyyy-MM-dd");
            string sql     = $@"IF NOT EXISTS(SELECT * FROM [dbo].[DayLog] WHERE [CaseDate]='{strdate}')
INSERT INTO [dbo].[DayLog] ([CaseDate], TotalCount, [DownloadCount])
VALUES('{strdate}', {dayCount}, 0)";

            CaseDB.Create().Execute(sql, null);
        }
Example #3
0
        public void Download(string caseId, string caseName, DateTime date, int pageIndex)
        {
            // conditions : WebUtility.UrlEncode 案件类型为刑事案件且文书类型为判决书且裁判日期为2018-06-01 TO 2018-06-01
            // docIds : e5eda16f-bf8e-4b71-8968-a8f200d7a792|汪某某、廖某某故意伤害罪二审刑事判决书|2018-06-01
            // keyCode : ""

            string coditions = WebUtility.UrlEncode("案件类型为刑事案件且文书类型为判决书且裁判日期为2018-06-01 TO 2018-06-01");
            string docIds    = $"{caseId}|{caseName}|{date.ToString("yyyy-MM-dd")}";
            string keyCode   = "";
            //Referer: http://wenshu.court.gov.cn/list/list/?sorttype=1&number=KHC8W9HV&guid=542fbd32-2a4b-59e04802-01dbe7a80284&conditions=searchWord+1+AJLX++%E6%A1%88%E4%BB%B6%E7%B1%BB%E5%9E%8B:%E5%88%91%E4%BA%8B%E6%A1%88%E4%BB%B6&conditions=searchWord+1+WSLX++%E6%96%87%E4%B9%A6%E7%B1%BB%E5%9E%8B:%E5%88%A4%E5%86%B3%E4%B9%A6&conditions=searchWord++CPRQ++%E8%A3%81%E5%88%A4%E6%97%A5%E6%9C%9F:2018-06-01%20TO%202018-06-01

            var url = "http://wenshu.court.gov.cn/CreateContentJS/CreateListDocZip.aspx?action=1";

            var web = this.GetClient();

            web.Headers.Clear();
            //web.Headers.Add("Origin", "http://wenshu.court.gov.cn");
            //web.Headers.Add("X-Requested-With", "XMLHttpRequest");
            web.Headers.Add(HttpRequestHeader.UserAgent, userAgent);
            web.Headers.Add("Content-Type", "application/x-www-form-urlencoded");//采取POST方式必须加的header,如果改为GET方式的话就去掉这句话即可
            web.Headers.Add(HttpRequestHeader.Accept, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
            web.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
            web.Headers.Add(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
            web.Headers.Add(HttpRequestHeader.Referer, WebUtility.UrlEncode(Referer1));
            web.Headers.Add(HttpRequestHeader.Host, "wenshu.court.gov.cn");

            //web.Headers.Add(HttpRequestHeader.Connection, "keep-alive");
            string param    = $"conditions={coditions}&docIds={docIds}&keyCode={keyCode}";
            var    postData = Encoding.UTF8.GetBytes(param);

            web.RequestConentLength = postData.Length;
            web.Proxy = _proxy;
            var    buffer   = web.UploadData(url, "POST", postData);//得到返回字符流
            string fileName = WebUtility.UrlDecode(web.Response.Headers["Content-Disposition"]).Replace("attachment;filename=", "");
            string folder   = Path.Combine(Directory.GetCurrentDirectory(), "files", date.ToString("yyyy-MM-dd"));

            if (Directory.Exists(folder) != true)
            {
                Directory.CreateDirectory(folder);
            }
            string filePath = Path.Combine(folder, fileName);

            File.WriteAllBytes(filePath, buffer);

            string sql = @"UPDATE DayLog SET DownloadCount = DownloadCount+1 WHERE CaseDate=@CaseDate; 
UPDATE CaseFile SET FilePath=@FilePath , PageIndex=@PageIndex WHERE CaseId=@CaseId ";

            CaseDB.Create().Execute(sql, new { CaseDate = date, filePath, pageIndex, caseId });
        }
Example #4
0
        public void ParseList(string json, DateTime date, int pageIndex)
        {
            json = json.Trim('"').Replace("\\\"", "\"");
            var dics = JsonConvert.DeserializeObject <JObject[]>(json);

            if (dics.Length > 0)
            {
                this.DayCount = Convert.ToInt32(dics[0]["Count"]);
                CaseDB.Create().InsertDayLog(date, this.DayCount);
            }

            Form1.MainForm.ShowState($"本页共有{DayCount}个文档, 即将开始下载...");

            Thread.Sleep(10000);

            for (int i = 1; i < dics.Length; i++)
            {
                Form1.MainForm.ShowState($"本页共有{DayCount}个文档, 即将开始下载 {1}...");
                CaseFile caseInfo = new CaseFile();
                caseInfo.CaseId      = dics[i]["文书ID"].ToString();
                caseInfo.UnpubReason = dics[i]["不公开理由"].ToString();
                caseInfo.CaseType    = dics[i]["案件类型"].ToString();
                caseInfo.CaseDate    = Convert.ToDateTime(dics[i]["裁判日期"].ToString());
                caseInfo.CaseName    = dics[i]["案件名称"].ToString();
                caseInfo.CaseRule    = dics[i]["审判程序"].ToString();
                caseInfo.CaseCode    = dics[i]["案号"].ToString();
                caseInfo.CourtName   = dics[i]["法院名称"].ToString();

                var db = CaseDB.Create();
                if (db.GetCase(caseInfo.CaseId) == null)
                {
                    db.InsertCase(caseInfo);
                }

                this.Download(caseInfo.CaseId, caseInfo.CaseName, date, pageIndex);


                Thread.Sleep(10000);
            }
        }