首页 > 编程语言 >c#根据城市名称获取相关信息

c#根据城市名称获取相关信息

时间:2023-07-19 23:45:21浏览次数:39  
标签:Regex string c# IP 获取 html 名称 ip 源码

 实现:得到真实IP以及所在地详细信息/通过IP得到IP所在地省市/获取HTML源码信息,感兴趣的朋友不妨了解一下,或许对你巩固所学知识有所帮助

/// <summary> 
/// 得到真实IP以及所在地详细信息(Porschev) 
/// </summary> 
/// <returns></returns> 
public string GetIpDetails() 

//设置获取IP地址和国家源码的网址 
string url = "http://www.ip138.com/ips8.asp"; 
string regStr = "(?<=<td\\s*align=\\\"center\\\">)[^<]*?(?=<br/><br/></td>)"; 
//IP正则 
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; 
//国家 
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 
ip = ma.Value; 
int index = html.LastIndexOf(":") + 1; 
//得到国家 
country = html.Substring(index); 
adr = GetAdrByIp(ip); 
return "IP:" + ip + " 国家:" + country + " 省市:" + adr; 

/// <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]; 

 
/// <summary> 
/// 获取HTML源码信息(Porschev) 
/// </summary> 
/// <param name="url">获取地址</param> 
/// <returns>HTML源码</returns> 
public string GetHtml(string url) 

string str = ""; 
try 

Uri uri = new Uri(url); 
WebRequest wr = WebRequest.Create(uri); 
Stream s = wr.GetResponse().GetResponseStream(); 
StreamReader sr = new StreamReader(s, Encoding.Default); 
str = sr.ReadToEnd(); 

catch (Exception e) 


return str; 

更多有关城市相关的信息可看信息港上做的一些城市分类。

标签:Regex,string,c#,IP,获取,html,名称,ip,源码
From: https://www.cnblogs.com/yeci/p/17567099.html

相关文章

  • Educational Codeforces Round 151
    AB略C(简)将密码\(P\)与\(S\)进行匹配,按顺序决定\(P_i\),为了避免\(P\)成为\(S\)的子串,每次贪心地选择当前匹配位置最靠后的。若出现匹配不上则“YES”。D有点意思。从基础的情况入手:设\(\{s_i\}\)为\(\{a_i\}\)的前缀和,弄出\(\{s_i\}\)的图像,让我们考虑第一个......
  • MATLAB用GARCH-EVT-Copula极值理论模型VaR预测分析股票投资组合|附代码数据
    全文链接:http://tecdat.cn/?p=30426最近我们被客户要求撰写关于GARCH-EVT-Copula的研究报告,包括一些图形和统计输出。对VaR计算方法的改进,以更好的度量开放式基金的风险。本项目把基金所持股票看成是一个投资组合,引入Copula来描述多只股票间的非线性相关性,构建多元GARCH-EVT-Cop......
  • 多线程:C语言 - 简易线程池的原理和实现
    目录线程循环处理任务,线程不退出1.存储任务--循环读取任务2.函数回调--函数退出,线程不退出本质是事件驱动,是生产者消费者模型1.工作线程--线程池的池化单元,任务的消费者2.线程池持有者--提供多任务,任务的生产者存储任务的数据结构1.任务(task_t)2.任务队列/阻塞队列(task_q......
  • 初识C语言——3
    循环1、while——while(表达式)     循环语句;2、for(表达式1;表达式2;表达式3)      循环语句;for循环语句中三个表达式都可以省略——即判断省略处,恒为真。for(i=2;i=0;i++)//——表达式2,将0赋值给i;0为假,则不满足表达式2;不进入循环。3、do   循环语句;while(......
  • 类中的vector初始化
    (21条消息)vector在类中声明问题_c++应输入类型说明符_线上幽灵的博客-CSDN博客在类中,vector不可以直接用下面的方式初始化 这应该是因为编译器无法知道这是函数还是vector定义,可以通过base(){a.resize(10)}或者base():a(10,1){}这种方式再初始化......
  • jacoco+ant 构建java覆盖率
    所需工具:JacocoAnt2020.5.26:踩坑报错Unabletodumpcoveragedata,经过查证修改后发现为tomcat需用tomcat自带startup.bat启动,用eclipse启动仿佛插件无效。 Tomcat修改setJAVA_OPTS="-javaagent:[yourPath/]jacocoagent.jar=includes=com.companyName.*,output=tcpserv......
  • docker+jacoco构建接口测试覆盖率
    代码中需要更改的内容Dockerfile1.在文件中引入jacocoagent.jar,引入后需检查是否引入成功ADD./jacocoagent.jar/jacocoagent.jar2.打开jacocoagent监控端口,不能与其他jacocoagent端口重复,此端口也是docker容器启动的必填项EXPOSE99263.加入jacocoagent启动参数,端口号......
  • excel的vlookup函数的使用
    VLOOKUP函数的三种应用场景,同表,跨表,跨工作簿查询注意事项:查找的那一列必须是查找范围的首列,可以使用f4快捷键,防止查询不到  特别注意:格式一定要正确......
  • 从0开始学习 GitHub 系列之「06.团队合作利器 Branch」
    Git相比于SVN最强大的一个地方就在于「分支」,Git的分支操作简直不要太方便,而实际项目开发中团队合作最依赖的莫过于分支了,关于分支前面的系列也提到过,但是本篇会详细讲述什么是分支、分支的具体操作以及实际项目开发中到底是怎么依赖分支来进行团队合作的。1.什么是分支?我知道......
  • 在Forexclub平台能得到什么
    在Forexclub平台交易中,发现了了一套实用的建议,帮助投资者实现挂单交易的成功。这个策略以回溯测试和真实账户表现为基础,旨在为特定资产或当前市场情况提供单个参数的指标。每个策略都包含带有指示器的模板和安装的详细说明,以便在真实交易环境中成功应用这些模板,从而实现对外汇市场......