发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
输入正确的手机号码,查询该号码的归属地和其他相关信息。
01、本地数据库存储信息,查询本地库
02、调用WebService查询
03、通过Http请求Get方式从服务器上获取数据
01、采用本地数据库存储,可以断网查询,无需付费,但信息量较大占用本地资源
02、调用WebService必须连接网络,不占用本地资源,但公开的WebService大多数需要付费。
03、通过Http请求Get方式从服务器上获取数据的方式必须连接网络,不占用本地资源,无需付费。
通过以上分析,决定采用第3种方式实现
寻找免费的手机号码归属地查询网址
通过一番寻找和对比,决定使用“手机号码归属地数据库API”这个网站上的查询接口。
首页地址:http://vip./locating/help.htm
查询地址(返回结果页面):http://api./Locating/query.aspx?m=手机号码
查询地址(返回xml数据):http://vip./locating/?m=手机号码
通过跟踪调试网站的JS代码,发现返回结果页面是使用$("txtMobile").innerHTML=obj["Mobile"];的方式赋值的,这样的话页面是有值的,但查看源代码发现结果为空,所以无法通过抓取网页源码来提取结果值。
经过分析和反复试验发现,查询结果可以直接发回xml格式的数据,哈哈,亲,要的就是你。
有了xml数据就好办了,通过抓取网页Html代码,用一个string变量存储xml格式的数据,然后通过分析xml数据得到手机号码归属地信息。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.IO; using System.Xml; namespace QueryLocating { public partial class formQueryLocating : Form { //Html网页代码 private string htmlCode = string.Empty; //运营商 private string corp = string.Empty; //手机卡类型 private string card = string.Empty; public formQueryLocating() { InitializeComponent(); } /// <summary> /// 查询 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnQuery_Click(object sender, EventArgs e) { if (txtm.Text.Trim().ToString() != "") { //抓取网页html代码 htmlCode = GetStringByUrl("http://vip./locating/?m=" + txtm.Text.Trim().ToString()); //查询手机号码归属地 QueryLocating(htmlCode); } else { txtMobile.Text = ""; txtProvince.Text = ""; txtCity.Text = ""; txtAreaCode.Text = ""; txtPostCode.Text = ""; txtCard.Text = ""; MessageBox.Show("请输入手机号码!", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } /// <summary> /// 查询手机号码归属地 /// </summary> /// <param name="htmlCode">网页Html代码</param> private void QueryLocating(string htmlCode) { //创建Xml实例 XmlDocument xmldoc = new XmlDocument(); //加载Xml文档 xmldoc.LoadXml(htmlCode); //获取Xml文档的根元素 XmlElement root = xmldoc.DocumentElement; //获取Xml文档的根元素下的所有子节点 XmlNodeList topNode = xmldoc.DocumentElement.ChildNodes; //子节点集合 XmlNodeList elemList; //遍历根元素下所有子节点 foreach (XmlElement element in topNode) { //根据节点名称获取节点元素值 elemList = root.GetElementsByTagName(element.Name); switch (element.Name) { //判断手机号码格式是否正确 case "QueryResult": if (elemList[0].InnerText.ToString() == "False") MessageBox.Show("您输入的手机号码格式有误,请重新输入!", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Information); continue; //手机号码 case "Mobile": txtMobile.Text = elemList[0].InnerText; break; //所属省份 case "Province": txtProvince.Text = elemList[0].InnerText; break; //所属城市 case "City": txtCity.Text = elemList[0].InnerText; break; //区号 case "AreaCode": txtAreaCode.Text = elemList[0].InnerText; break; //邮编 case "PostCode": txtPostCode.Text = elemList[0].InnerText; break; //运营商 case "Corp": corp = elemList[0].InnerText; break; //卡类型 case "Card": card = elemList[0].InnerText; //拼接字符串(运营商+卡类型) txtCard.Text = corp + card; break; } } } /// <summary> /// 抓取网页html代码 /// </summary> /// <param name="strUrl">URL</param> /// <returns></returns> private static string GetStringByUrl(string strUrl) { //与指定URL创建HTTP请求 WebRequest wrt = WebRequest.Create(strUrl); //获取对应HTTP请求的响应 WebResponse wrse = wrt.GetResponse(); //获取响应流 Stream strM = wrse.GetResponseStream(); //对接响应流(以"GBK"字符集) StreamReader SR = new StreamReader(strM, Encoding.GetEncoding("UTF-8")); //获取响应流的全部字符串 string strallstrm = SR.ReadToEnd(); //关闭读取流 SR.Close(); //返回网页html代码 return strallstrm; } } }
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
批量手机号码归属地查询
批量手机号码归属地查询批量手机号码归属地查询。可以在应用商店中搜索并下载一些手机号码归属地查询软件,如“手机号码归属地查询”、“全国手机号码归属地查询”等。各家运营商都提供了在线查询手机...
如何批量查询手机号码归属地
如何批量查询手机号码归属地。手机号码是联系一个人的重要方式,那么如何查询手机号码归属地呢?下面一起来看看吧。1.打开Excel文件,选...
手机号码归属地查询
手机号码归属地查询简介。手机号码归属地可以通过号码的前七位进行判断。中国大陆地区手机号码格式为:1**####$$$$手机号码的前七位是号段,后四位是随机分配的,因此主要关注手机号码的前七位。在前七...
手机号码段的归属
手机号码段的归属。移动号段:134~139,147,150~152,157(TD)~159,181~183,187~188(3G_TD-SCDMA)联通号段:130~132,155~156,185~186(3G-WCDMA)电信号段:133,153,180(3G),189(3G-CDMA...
一个免费的API-手机号码归属地API接口
一个免费的API-手机号码归属地API接口。</reason> - <result> <province>浙江</province> <city>杭州</city> <areacode>...
.net手机号码归属地导入
.net手机号码归属地导入手机号码归属地导入(2010-11-24 05:51:28)string 开始号码 = strs[0]; string 结束号码 = strs[1]; string 市 = strs[2...
亲手撸码,爬取 手机号码归属地最新数据(201911)
亲手撸码,爬取 手机号码归属地最新数据(201911)// 从手机前3位 130 开始 至 199 结束for (int i = 130; i <200; i++){ int mobile...
华为手机来电显示未知怎么解决
华为手机来电显示未知怎么解决。不知道是什么原因,华为手机的来电显示未知,有2个原因,第一是你的手机号没有开通来电显示功能,第二就...
实用且常用的手机助手:手机号码归属查询
应用为一款查询手机号码归属地的生活助手类应用,查询的手机号码涵盖中国移动、中国联通和中国电信的移动手机号码(不包括固定电话号码)...
微信扫码,在手机上查看选中内容