zoukankan      html  css  js  c++  java
  • csharp:正则表达式采集网页数据

    https://msdn.microsoft.com/zh-cn/library/system.text.regularexpressions.regex(v=vs.110).aspx

    https://github.com/StackExchange/dapper-dot-net

     /// <summary>
            /// 
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void StatsoneForm_Load(object sender, EventArgs e)
            {
                string s = @"<tr height='19' style='height:14.25pt;mso-height-source:userset;mso-height-alt:285;'>    <td class='xl67' height='19' style='height:14.25pt;'></td>    <td class='xl71' x:num>110000</td>    <td class='xl71' x:str>北京市</td>    <td class='xl67'></td>    <td class='xl70'></td>    <td class='xl70'></td>    <td class='xl70'></td>    <td colspan='3' style='mso-ignore:colspan;'></td>   </tr>";
                string f = ExtensionPost(s);
                MessageBox.Show(f);
                string sb = @"<p class='msonormal' style='line-height: 150%'><span lang='en-us' style='line-height: 150%; font-family: 'times new roman', 'serif'; font-size: 12pt'>110000<span>  </span></span><span style='line-height: 150%; font-family: 宋体; font-size: 12pt'>北京市</span></p>";
                string fb = ExtensionPostb(sb);
                MessageBox.Show(fb);
    
                string strhtml = @"<p class='msonormal' style='line-height: 150%'><span lang='en-us' style='line-height: 150%; font-family: 'times new roman', 'serif'; font-size: 12pt'>110000<span>  </span></span><span style='line-height: 150%; font-family: 宋体; font-size: 12pt'>北京市</span></p><p class='msonormal' style='line-height: 150%'><span lang='en-us' style='line-height: 150%; font-family: 'times new roman', 'serif'; font-size: 12pt'>110100<span>  </span></span><span style='line-height: 150%; font-family: 宋体; font-size: 12pt'>市辖区</span></p><p class='msonormal' style='line-height: 150%'><span lang='en-us' style='line-height: 150%; font-family: 'times new roman', 'serif'; font-size: 12pt'>110101<span>  </span></span><span style='line-height: 150%; font-family: 宋体; font-size: 12pt'>东城区</span></p><p class='msonormal' style='line-height: 150%'><span lang='en-us' style='line-height: 150%; font-family: 'times new roman', 'serif'; font-size: 12pt'>110102<span>  </span></span><span style='line-height: 150%; font-family: 宋体; font-size: 12pt'>西城区</span></p><p class='msonormal' style='line-height: 150%'><span lang='en-us' style='line-height: 150%; font-family: 'times new roman', 'serif'; font-size: 12pt'>110105<span>  </span></span><span style='line-height: 150%; font-family: 宋体; font-size: 12pt'>朝阳区</span></p><p class='msonormal' style='line-height: 150%'><span lang='en-us' style='line-height: 150%; font-family: 'times new roman', 'serif'; font-size: 12pt'>110106<span>  </span></span><span style='line-height: 150%; font-family: 宋体; font-size: 12pt'>丰台区</span></p>";
                IEnumerable<AreaHtmlValue> htmlValue = GetRegValue(@"<p class='msonormal' style='line-height: 150%'><span lang='en-us' style='line-height: 150%; font-family: 'times new roman', 'serif'; font-size: 12pt'>(?<code>d+)<span>  </span></span><span style='line-height: 150%; font-family: 宋体; font-size: 12pt'>(?<name>w*)</span></p>", strhtml);
                List<AreaInfo> areaList = (from v in htmlValue
                                          // let name = v.Name.Replace("自治区直辖县级行政区划", "县").Replace("市辖区", "市").Replace("省直辖县级行政区划", "县")
                                          // .Replace("县", "")
                                           select new AreaInfo
                                           {
                                               AreaCode = v.Code.Substring(0, 5),
                                               AreaName = v.Name,
                                               AreaFullName = v.Name,
                                               ParentAreaCode = "0",
                                               ParentId = 0,
                                               CreateTime = DateTime.Now,
                                               AreaYear = 2015
                                           }).ToList();
    
    
                this.dataGridView1.DataSource = areaList;
    
            }
            /// <summary>
            /// <tr height='19' style='height:14.25pt;mso-height-source:userset;mso-height-alt:285;'>
            /// <td class='xl67' height='19' style='height:14.25pt;'></td>
            /// <td class='xl71' x:num>654326</td>
            ///<td class='xl71' x:str><span style='mso-spacerun:yes;'>    </span><font class='font3'>吉木乃县</font></td>
            ///<td class='xl67'></td>
            ///<td class='xl70'></td>
            ///<td class='xl70'></td>
            ///<td class='xl70'></td>
            ///<td colspan='3' style='mso-ignore:colspan;'></td>
            ///</tr>
            /// </summary>
            /// <param name="url"></param>
            /// <returns></returns>
            static String ExtensionPost(String url)
            {
    
                //<tr height='19' style='height:14.25pt;mso-height-source:userset;mso-height-alt:285;'>    <td class='xl67' height='19' style='height:14.25pt;'></td>    <td class='xl71' x:num>110000</td>    <td class='xl71' x:str>北京市</td>    <td class='xl67'></td>    <td class='xl70'></td>    <td class='xl70'></td>    <td class='xl70'></td>    <td colspan='3' style='mso-ignore:colspan;'></td>   </tr>
                //<p class='msonormal' style='line-height: 150%'><span lang='en-us' style='line-height: 150%; font-family: 'times new roman', 'serif'; font-size: 12pt'>110000<span>  </span></span><span style='line-height: 150%; font-family: 宋体; font-size: 12pt'> 北京市</span></p>
    
                //<tr height='19' style='height:14.25pt;mso-height-source:userset;mso-height-alt:285;'><td class='xl67' height='19' style='height:14.25pt;'></td><td class='xl71' x:num>654326</td><td class='xl71' x:str><span style='mso-spacerun:yes;'>    </span><font class='font3'>吉木乃县</font></td><td class='xl67'></td><td class='xl70'></td><td class='xl70'></td><td class='xl70'></td><td colspan='3' style='mso-ignore:colspan;'></td></tr>
               // Regex r = new Regex(@"<tr height='19' style='height:14.25pt;mso-height-source:userset;mso-height-alt:285;'><td class='xl67' height='19' style='height:14.25pt;'></td><td class='xl71' x:num>(?<port>d+)</td><td class='xl71' x:str><span style='mso-spacerun:yes;'>    </span><font class='font3'>(?<proto>w+)</font></td><td class='xl67'></td><td class='xl70'></td><td class='xl70'></td><td class='xl70'></td><td colspan='3' style='mso-ignore:colspan;'></td></tr>",
                Regex r = new Regex(@"<tr height='19' style='height:14.25pt;mso-height-source:userset;mso-height-alt:285;'>    <td class='xl67' height='19' style='height:14.25pt;'></td>    <td class='xl71' x:num>(?<port>d+)</td>    <td class='xl71' x:str>(?<proto>w+)</td>    <td class='xl67'></td>    <td class='xl70'></td>    <td class='xl70'></td>    <td class='xl70'></td>    <td colspan='3' style='mso-ignore:colspan;'></td>   </tr>",
                RegexOptions.Compiled);
                return r.Match(url).Result("${proto}${port}");
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="url"></param>
            /// <returns></returns>
            static string ExtensionPostb(string url)
            {
                Regex r = new Regex(@"<p class='msonormal' style='line-height: 150%'><span lang='en-us' style='line-height: 150%; font-family: 'times new roman', 'serif'; font-size: 12pt'>(?<port>d+)<span>  </span></span><span style='line-height: 150%; font-family: 宋体; font-size: 12pt'>(?<proto>w*)</span></p>",
                RegexOptions.Compiled);
                return r.Match(url).Result("${proto}${port}");
            }
    
    
            /// <summary>
            /// http://files2.mca.gov.cn/www/201512/20151224151630189.htm
            /// <tr height="19" style='height:14.25pt;mso-height-source:userset;mso-height-alt:285;'><td class="xl67" height="19" style='height:14.25pt;'></td><td class="xl71" x:num>110000</td><td class="xl71" x:str>北京市</td><td class="xl67"></td><td class="xl70"></td><td class="xl70"></td><td class="xl70"></td><td colspan="3" style='mso-ignore:colspan;'></td></tr>
            /// http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201504/t20150415_712722.html
            /// <p class="MsoNormal" style="line-height: 150%"><span lang="EN-US" style="line-height: 150%; font-family: 'Times New Roman', 'serif'; font-size: 12pt">110000<span>  </span></span><span style="line-height: 150%; font-family: 宋体; font-size: 12pt"> 北京市</span></p>
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    //1
                    string url = "http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201504/t20150415_712722.html";
                    //2
                    //string url = "http://files2.mca.gov.cn/www/201512/20151224151630189.htm";
                    // 获取相关HTML块
                    //IEnumerable<AreaHtmlValue> htmlValue =GetRegValue(@"<tr class='villagetr'><td>(?<code>d{12})</td><td>(?<type>d{3})</td><td>(?<name>w*)</td></tr>",GetHtml(url));
                    //<p class='msonormal' style='line-height: 150%'><span lang='en-us' style='line-height: 150%; font-family: 'times new roman', 'serif'; font-size: 12pt'>110000<span>  </span></span><span style='line-height: 150%; font-family: 宋体; font-size: 12pt'> 北京市</span></p>
                    //1
                    IEnumerable<AreaHtmlValue> htmlValue = GetRegValue(@"<p class='msonormal' style='line-height: 150%'><span lang='en-us' style='line-height: 150%; font-family: 'times new roman', 'serif'; font-size: 12pt'>(?<code>d+)<span>  </span></span><span style='line-height: 150%; font-family: 宋体; font-size: 12pt'>(?<name>w*)</span></p>", GetHtml(url));
                    //2
                    //IEnumerable<AreaHtmlValue> htmlValue = GetRegValue(@"<tr height='19' style='height:14.25pt;mso-height-source:userset;mso-height-alt:285;'><td class='xl67' height='19' style='height:14.25pt;'></td><td class='xl71' x:num>(?<code>d+)</td><td class='xl71' x:str><span style='mso-spacerun:yes;'>    </span><font class='font3'>(?<name>w*)</font></td><td class='xl67'></td><td class='xl70'></td><td class='xl70'></td><td class='xl70'></td><td colspan='3' style='mso-ignore:colspan;'></td></tr>", GetHtml(url));
                    //this.richTextBox1.Text = GetHtml(url);
                   // this.textBox1.Text = GetHtml(url);
                   // this.textBox1.SelectAll();
                    List<AreaInfo> areaList = (from v in htmlValue
                                               //let name = v.Name.Replace("自治区直辖县级行政区划", "县").Replace("市辖区", "市").Replace("省直辖县级行政区划", "县")
                                                      //.Replace("县", "")
                                                 select new AreaInfo
                                                  {
                                                      AreaCode = v.Code.Substring(0, 6),
                                                      AreaName = v.Name,
                                                      AreaFullName = v.Name,
                                                      ParentAreaCode = "0",
                                            
                                                      ParentId = 0,
                                                      CreateTime = DateTime.Now,
                                                      AreaYear = 2015
                                                  }).ToList();
    
                   
                    this.dataGridView2.DataSource = areaList;
    
                    WebClient wc = new WebClient();
                   string mainData = Encoding.UTF8.GetString(wc.DownloadData(string.Format("http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201504/t20150415_712722.html")));
                   this.richTextBox2.Text =RemoveScript(RemoveStyle(ReplaceEnter(mainData)));
                  // this.textBox2.Text = RemoveScript(RemoveStyle(ReplaceEnter(mainData)));
                  // this.textBox2.SelectAll();
    
                }
                catch (Exception ex)
                {
                    ex.Message.ToString();
                }
    
            }
            #region 网页源码
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="url"></param>
            private static void updowndimg(string url)
            {
                WebClient client = new WebClient();
                string html = client.DownloadString(url);
                MatchCollection matches = Regex.Matches(html, "<img\s*.*src="(.+?)".*/>");
                for (int i = 0; i < matches.Count; i++)
                {
                    string img = matches[i].Groups[1].Value.Replace(""", string.Empty);
                    img = "url/" + img;
                    client.DownloadFile(img, @"c:g" + Path.GetFileName(img));
                    Console.WriteLine(img);
                }
                Console.ReadKey();
            }
            /// <summary>
            /// 例如,Find_po在字开头处查找以"po"开头的字符串:
            /// </summary>
            static void Find_po()
            {
                string text = @" I can not find my position in Beijing ";
                string pattern = @"poS*ion";
                MatchCollection matches = Regex.Matches(text, pattern, RegexOptions.IgnoreCase
               | RegexOptions.IgnorePatternWhitespace | RegexOptions.ExplicitCapture);
                WriteMatches(text, matches);
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="text"></param>
            /// <param name="matches"></param>
            static void WriteMatches(string text, MatchCollection matches)
            {
                Console.WriteLine("Original text was: 
    
    " + text + "
    ");
                Console.WriteLine("No. of matches: " + matches.Count);
                foreach (Match nextMatch in matches)
                {
                    int Index = nextMatch.Index;
                    string result = nextMatch.ToString();
                    int charsBefore = (Index < 5) ? Index : 5;
                    int fromEnd = text.Length - Index - result.Length;
                    int charsAfter = (fromEnd < 5) ? fromEnd : 5;
                    int charsToDisplay = charsBefore + charsAfter + result.Length;
                    Console.WriteLine("Index: {0}, 	String: {1}, 	{2}", Index, result,
                    text.Substring(Index - charsBefore, charsToDisplay));
                }
            }
            /// <summary>
            /// 如,"http://www.yahoo.com.cn:8080/index.html"将返回"http:8080"。
            /// </summary>
            /// <param name="url"></param>
            /// <returns></returns>
            String Extension(String url)
            {
                Regex r = new Regex(@"^(?<proto>w+)://[^/]+?(?<port>:d+)?/",
                RegexOptions.Compiled);
                return r.Match(url).Result("${proto}${port}");
            }
            /// <summary>
            ///     获取远程网页源码
            /// </summary>
            /// <param name="url"></param>
            /// <returns></returns>
            private static string GetHtml(string url)
            {
                try
                {
                    WebRequest webRequest = WebRequest.Create(url);
                    WebResponse webResponse = webRequest.GetResponse();
                    Stream reader = webResponse.GetResponseStream();
    
                    if (reader != null)
                    {
                        var respStreamReader = new StreamReader(reader, Encoding.UTF8); //
    
                        var cbuffer = new char[1024];
    
                        int byteRead = respStreamReader.Read(cbuffer, 0, 256);
    
                        string strBuff = string.Empty;
    
                        while (byteRead != 0)
                        {
                            var strResp = new string(cbuffer, 0, byteRead);
    
                            strBuff = strBuff + strResp;
    
                            byteRead = respStreamReader.Read(cbuffer, 0, 256);
                        }
    
                        strBuff = RemoveScript(RemoveStyle(ReplaceEnter(strBuff)));
    
                        return strBuff;
                    }
                }
                catch (Exception)
                {
                    AreaLogHelper.WriteLogFile("【异常URL】" + url);
                    Console.WriteLine("【异常URL】" + url);
                }
    
                return string.Empty;
            }
    
            /// <summary>
            ///     替换网页中的换行和引号
            /// </summary>
            /// <param name="htmlCode">HTML源代码</param>
            /// <returns></returns>
            private static string ReplaceEnter(string htmlCode)
            {
                if (string.IsNullOrEmpty(htmlCode))
                    return string.Empty;
                return htmlCode.Replace("
    ", "").Replace(""", "'").Replace("
    ", "").Replace("
    ", "").Replace("   ", "").Replace("  ", "").Replace("    ", "").Replace("   ", "").Replace(" ", "").ToLower();//.Replace(""", "").Replace(" ", "")
            }
    
               #region private methods 
                private static string RemoveComment(string input) 
                { 
                    string result = input; 
                    //remove comment 
                    result = Regex.Replace(result, @"<!--[^-]*-->", string.Empty, RegexOptions.IgnoreCase); 
                    return result; 
                } 
                private static string RemoveStyle(string input) 
                { 
                    string result = input; 
                    //remove all styles 
                    result = Regex.Replace(result, @"<style[^>]*?>.*?</style>", string.Empty, RegexOptions.IgnoreCase | RegexOptions.Singleline); 
                    return result; 
                }
                private static string RemoveScript(string input) 
                { 
                    string result = input; 
                    result = Regex.Replace(result, @"<script[^>]*?>.*?</script>", string.Empty, RegexOptions.IgnoreCase | RegexOptions.Singleline); 
                    result = Regex.Replace(result, @"<noscript[^>]*?>.*?</noscript>", string.Empty, RegexOptions.IgnoreCase | RegexOptions.Singleline); 
                    return result; 
                }
                private static string RemoveTags(string input) 
                { 
                    string result = input; 
                    result = result.Replace(" ", " "); 
                    result = result.Replace("", """); 
                    result = result.Replace("<", "<"); 
                    result = result.Replace(">", ">"); 
                    result = result.Replace("&", "&"); 
                    result = result.Replace("<br>", "
    "); 
                    result = Regex.Replace(result, @"<[sS]*?>", string.Empty, RegexOptions.IgnoreCase); 
                    return result; 
                } 
                #endregion
            /// <summary>
            ///  执行正则提取出值
            /// </summary>
            /// <param name="regexString">正则表达式</param>
            /// <param name="remoteStr">HtmlCode源代码</param>
            /// <returns></returns>
            private static IEnumerable<AreaHtmlValue> GetRegValue(string regexString, string remoteStr)
            {
                var reg = new Regex(regexString, RegexOptions.Compiled);//RegexOptions.Compiled
                MatchCollection mc = reg.Matches(remoteStr);
    
                return (from Match m in mc
                        select new AreaHtmlValue
                        {
                            Code = m.Groups["code"].Value,
                            Name = m.Groups["name"].Value,
                           // Type = m.Groups["type"].Value
                        }).ToList();
            }
    
            private class AreaHtmlValue
            {
                public string Code { get; set; }
                public string Name { get; set; }
    
                public string Type { get; set; }
            }
    
            #endregion
    
        }
    

      

    IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].AreasList') and OBJECTPROPERTY(id, N'IsUserTable') = 1) 
    DROP TABLE AreasList 
    GO
    CREATE TABLE [AreasList]
    (
        [AreaId] INT IDENTITY(1,1) PRIMARY KEY,
    	[AreaCode] nvarchar(50) NOT NULL,
    	[AreaName] nvarchar(50) NOT NULL,
    	[AreaFullName] nvarchar(250) NULL,
    	[ParentAreaCode] nvarchar(50) NULL,
    	[ParentId] INT NULL,
    	[AreaType] nvarchar(10) NULL,
    	[AreaYear] INT NOT NULL,  --年份版本
    	[CreateTime] datetime NOT NULL DEFAULT (getdate())
    )
    GO
    --描述
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'区域table' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'AreasList'
    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'区域id' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'AreasList', @level2type=N'COLUMN',@level2name=N'AreaId'
    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'区域标识' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'AreasList', @level2type=N'COLUMN',@level2name=N'AreaCode'
    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'区域名称' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'AreasList', @level2type=N'COLUMN',@level2name=N'AreaName'
    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'区域全称' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'AreasList', @level2type=N'COLUMN',@level2name=N'AreaFullName'
    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'父级标识' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'AreasList', @level2type=N'COLUMN',@level2name=N'ParentAreaCode'
    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'父级id' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'AreasList', @level2type=N'COLUMN',@level2name=N'ParentId'
    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'城乡分类 (111:主城区、112:城乡结合区、121:镇中心区、122:镇乡结合区、123:特殊区域、210:乡中心区、220:村庄)' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'AreasList', @level2type=N'COLUMN',@level2name=N'AreaType'
    GO
    --sp_updateextendedproperty
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'版本年份' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'AreasList', @level2type=N'COLUMN',@level2name=N'AreaYear'
    GO
    EXEC sys.sp_updateextendedproperty @name=N'MS_Description', @value=N'版本年份' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'AreasList', @level2type=N'COLUMN',@level2name=N'AreaYear'
    GO
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'AreasList', @level2type=N'COLUMN',@level2name=N'CreateTime'
    GO
    
    SELECT  * FROM [AreasList]
    SELECT TOP 50 * FROM [AreasList]
    IF  ParentAreaCode='11'
    SELECT AreaId FROM AreasList WHERE AreaCode='11'
    --ParentId
    SELECT * FROM AreasList WHERE ParentAreaCode='11'
    ---SQL Server遍历表345509
    
    DECLARE @tempId INT,@tempName VARCHAR(100),@tempcount INT,@id INT,@ParentAreaCode VARCHAR(50),@parentId INT,@areaid INT
    set @tempcount=(select COUNT(*) from AreasList)  
    SET @id=709245
    WHILE EXISTS ( SELECT   AreaId FROM     AreasList)
        BEGIN 
            SET ROWCOUNT @id 
            IF @id=709253
               BREAK
            SELECT  @tempId = AreaId ,
                    @tempName = AreaName,
                    @ParentAreaCode=ParentAreaCode
            FROM    AreasList  
            SET ROWCOUNT 0  
            -- 
            SELECT @areaid=AreaId FROM AreasList WHERE AreaCode=@ParentAreaCode
            IF @ParentAreaCode IS NOT NULL OR @ParentAreaCode<>''
            BEGIN
    			SET @parentId=@areaid
    			--更新父节点
    			UPDATE AreasList SET ParentId=@parentId WHERE AreaId=@tempId	
            END 
            PRINT 'Name:----' +CAST(@tempId AS VARCHAR(20))+ @tempName+'parentId'+STR(@parentId) 
            set @id=@id+1;
    END
    
    
    SELECT * FROM dbo.AreasList WHERE ParentAreaCode IS NULL
    UPDATE AreasList SET ParentId=null WHERE ParentAreaCode IS NULL 
    
    UPDATE AreasList SET ParentId=null WHERE AreaId=709250
    UPDATE AreasList SET ParentId=null WHERE AreaId=709251
    UPDATE AreasList SET ParentId=null WHERE AreaId=709252
    --
    DECLARE @tempId INT,@tempName VARCHAR(100),@tempcount INT,@id INT
    set @tempcount=(select COUNT(*) from AreasList)  
    SET @id=1
    WHILE EXISTS ( SELECT   AreaId FROM     AreasList)
        BEGIN 
            SET ROWCOUNT @id 
            SELECT  @tempId = AreaId ,
                    @tempName = AreaName
            FROM    AreasList  
            SET ROWCOUNT 0  
    --delete from @temp where AreaId = @tempId 
            PRINT 'Name:----' +CAST(@tempId AS VARCHAR(20))+ @tempName  
             set @id=@id+1;
    END
    
    --
    declare @tempId int,@tempName varchar(10) ,@tempcount int
    set @tempcount=(select COUNT(*) from AreasList);
     set @tempId=0;
     while (@tempId<=@tempcount )
      begin
      set  @tempName=(select AreaName from AreasList where AreaId=@tempId);  
     print 'the id is :'+str(@tempId) +' the name is :  '+@tempName;
     set @tempId=@tempId+1; 
     END
     
    --打开游标
    declare @tempId int,@tempName varchar(10),@ParentAreaCode VARCHAR(50),@parentId INT,@areaid INT
    DECLARE test_Cursor CURSOR LOCAL FOR
    SELECT AreaId,AreaName,ParentAreaCode FROM AreasList
    OPEN test_Cursor
    WHILE @@FETCH_STATUS = 0
        BEGIN  
            FETCH NEXT FROM test_Cursor INTO @tempId,@tempname,@ParentAreaCode
             --
            IF @ParentAreaCode IS NOT NULL OR @ParentAreaCode<>''
            BEGIN 
    			SELECT @areaid=AreaId FROM AreasList WHERE AreaCode=@ParentAreaCode
    			SET @parentId=@areaid
    			--更新父节点
    			 --UPDATE AreasList SET ParentId=@parentId WHERE AreaId=@tempId   
    			UPDATE AreasList SET ParentId=@parentId WHERE AreaId=@tempId 
             END                 
            PRINT 'Name:----'  +str(@tempId)+ @tempName+'parentId'+STR(@parentId)  
        END 
    CLOSE test_Cursor
    DEALLOCATE test_Cursor
    

      

    https://maps.googleapis.com/maps/api/geocode/json?address=Winnetka&key=YOUR_API_KEY
    https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
    https://maps.googleapis.com/maps/api/geocode/xml?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&key=YOUR_API_KEY
    https://maps.googleapis.com/maps/api/geocode/json?address=Winnetka&bounds=34.172684,-118.604794|34.236144,-118.500938&key=YOUR_API_KEY

    http://restapi.amap.com/v3/geocode/geo?parameters
    http://restapi.amap.com/v3/geocode/regeo?parameters

    http://lbs.amap.com/api/webservice/reference/georegeo/
    http://restapi.amap.com/v3/geocode/regeo?output=xml&location=116.310003,39.991957&key=<用户的key>&radius=1000&extensions=all
    http://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&output=xml&key=<用户的key>

    http://lbsyun.baidu.com/index.php?title=webapi/ip-api
    http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding

    http://api.map.baidu.com/geocoder/v2/?ak=<用户的key>&callback=renderReverse&location=39.983424,116.322987&output=json&pois=1
    http://api.map.baidu.com/geocoder/v2/?ak=<用户的key>&callback=renderReverse&location=39.983424,116.322987&output=xml&pois=1

    https://www.microsoft.com/maps/choose-your-bing-maps-API.aspx

    https://developer.yahoo.com/maps/flash/jsGettingStarted.html

    http://www.bing.com/dev/en-us/dev-center

    https://msdn.microsoft.com/en-us/library/gg427610.aspx

    //1.省未显示
                List<AreaInfo> areaList2 = (from v in htmlValue1
                                            let name = v.Name.Replace("自治区直辖县级行政区划", "县").Replace("市辖区", "市").Replace("省直辖县级行政区划", "县")
                                            .Replace("县", "")
                                            select new AreaInfo
                                            {
                                                AreaCode = v.Code.Substring(0, 6),
                                                AreaName = v.Name,
                                                AreaFullName = v.Name,
                                                ParentAreaCode = "0",
                                                ParentId = 0,
                                                CreateTime = DateTime.Now,
                                                AreaYear = ye
                                            }).ToList();
                //
                List<AreaInfo> areaList4 = (from v in htmlValue4
                                            let name = v.Name.Replace("自治区直辖县级行政区划", "县").Replace("市辖区", "市").Replace("省直辖县级行政区划", "县")
                                            .Replace("县", "")
                                            select new AreaInfo
                                            {
                                                AreaCode = v.Code.Substring(0, 6),
                                                AreaName = v.Name,
                                                AreaFullName = v.Name,
                                                ParentAreaCode = "0",
                                                ParentId = 0,
                                                CreateTime = DateTime.Now,
                                                AreaYear = ye
                                            }).ToList();
                //
                List<AreaInfo> areaList = (from v in htmlValue
                                           let name = v.Name.Replace("自治区直辖县级行政区划", "县").Replace("市辖区", "市").Replace("省直辖县级行政区划", "县")
                                           .Replace("县", "")
                                           select new AreaInfo
                                           {
                                               AreaCode = v.Code.Substring(0, 6),
                                               AreaName = v.Name,
                                               AreaFullName = v.Name,
                                               ParentAreaCode = "0",
                                               ParentId = 0,
                                               CreateTime = DateTime.Now,
                                               AreaYear = ye
                                           }).ToList();
    
                List<AreaInfo> areaList3 = (from v in htmlValue2
                                            let name = v.Name.Replace("自治区直辖县级行政区划", "县").Replace("市辖区", "市").Replace("省直辖县级行政区划", "县")
                                            .Replace("县", "")
                                            select new AreaInfo
                                            {
                                                AreaCode = v.Code.Substring(0, 6),
                                                AreaName = v.Name,
                                                AreaFullName = v.Name,
                                             //
                                             ParentAreaCode = "0",
                                                ParentId = 0,
                                                CreateTime = DateTime.Now,
                                                AreaYear = ye
                                            }).ToList();
    
    
    
    
                //Concat保留重复项  Union 剔除重复项
               List<AreaInfo> Result = areaList.Concat(areaList3).ToList <AreaInfo>();
               Result = Result.Concat(areaList2).ToList<AreaInfo>();
               Result = Result.Concat(areaList4).ToList<AreaInfo>();
    
               ///升序  
               List<AreaInfo> listArea1 = Result.OrderBy(s => s.AreaCode).ToList<AreaInfo>();
               //降序  
               List<AreaInfo> listArea2 = Result.OrderByDescending(s => s.AreaCode).ToList<AreaInfo>();
               //Linq排序方式  
               List<AreaInfo> listArea3 = (from c in Result
                                               orderby c.AreaCode ascending//ascending  descending
                                               select c).ToList<AreaInfo>();  
    

      

  • 相关阅读:
    前端性能优化成神之路--图片懒加载(lazyload image)
    前端性能优化成神之路-异步加载
    浮动布局详解
    布局:上下两个div高度固定,中间自适应
    盒子模型和弹性盒子模型的详解
    CSRF攻击详解
    使用Base64格式的图片制作ICON
    如何让父元素有透明度,但里面的子元素不透明
    父级元素以及子元素高度宽度未知如何实现水平垂直居中
    php file文件操作函数
  • 原文地址:https://www.cnblogs.com/geovindu/p/5200334.html
Copyright © 2011-2022 走看看