[转]抓取网页获得ip

 

  private string GetIpAddress()
        {
           try
            {
                WebClient client = new WebClient();
                client.Encoding = System.Text.Encoding.Default;
                string response = client.UploadString("http://iframe.ip138.com/ipcity.asp","");
                Match mc = Regex.Match(response, @"location.href=""(.*)""");
                if(mc.Success && mc.Groups.Count > 1)
                {
                    response = client.UploadString(mc.Groups[1].Value,"");
                    return response;//做相关处理
                }
                return null;
            }
            catch (System.Exception e)
            {
            }
        }

 

 

 

 

 

#region##得到真实IP以及所在地详细信息       
   /// <summary>       
   /// 得到真实IP以及所在地详细信息(Porschev)       
   /// </summary>       
   /// <returns></returns>       
   public string GetIpDetails()      
   {          
       string url = "http://www.ip138.com/ips8.asp";   //设置获取IP地址和国家源码的网址          
       string regStr = "(?<=<td\\s*align=\\\"center\\\">)[^<]*?(?=<br/><br/></td>)";            
       string ipRegStr = "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)";    //IP正则                   
       string ip = string.Empty;   //IP地址           
       string country = string.Empty;  //国家           
       string adr = string.Empty;   //省市           
       string html = GetHtml(url);       //得到网页源码           
       Regex reg = new Regex(regStr, RegexOptions.None);                 
       Match ma = reg.Match(html);        html = ma.Value;                
       Regex ipReg = new Regex(ipRegStr, RegexOptions.None);          
       ma = ipReg.Match(html);          
       ip = ma.Value;     //得到IP           
       int index = html.LastIndexOf("") + 1;          
       country = html.Substring(index);                   //得到国家           
       adr = GetAdrByIp(ip);          
       return "IP:" + ip + "  国家:" + country + "  省市:" + adr;     
   }          
   #endregion     
 
   #region##通过IP得到IP所在地省市       
   /// <summary>       
   /// 通过IP得到IP所在地省市(Porschev)       
   /// </summary>       
   /// <param name="ip"></param>       
   /// <returns></returns>       
   public string GetAdrByIp(string ip)      
   {          
       string url = "http://www.cz88.net/ip/?ip=" + ip;          
       string regStr = "(?<=<span\\s*id=\\\"cz_addr\\\">).*?(?=</span>)";                  
       string html = GetHtml(url);       //得到网页源码           
       Regex reg = new Regex(regStr, RegexOptions.None);          
       Match ma = reg.Match(html);                  
       html = ma.Value;            
       string[] arr = html.Split(' ');          
       return arr[0];      
   }      
   #endregion      
    
   #region##获取HTML源码信息       
   /// <summary>       
   /// 获取HTML源码信息(Porschev)       
   /// </summary>       
   /// <param name="url">获取地址</param>       
   /// <returns>HTML源码</returns>       
   public string GetHtml(string url)      
   {          
       Uri uri = new Uri(url);          
       WebRequest wr = WebRequest.Create(uri);          
       Stream s = wr.GetResponse().GetResponseStream();          
       StreamReader sr = new StreamReader(s, Encoding.Default);                  
       return sr.ReadToEnd();      
   }      
   #endregion  

 

 

 

posted @ 2013-02-04 09:46  龙磐天石  阅读(147)  评论(0)    收藏  举报