Java获取手机号码归属地
工作过程中抓取了很多手机号码,现需要获取他们的归属地。于是自己写了个工具类,这个工具类只是基本了实现该功能,没有考虑其他因素。
我知道手机号码归属地的判断是根据前7位,一开始本想获取他们的规律,就是哪个号码段的手机是属于哪个地区,但发现自己无法获取。于是想到了有一些网站有这个功能,同时自己也写爬虫,于是利用爬虫的思路去完成这个功能。这里大概思路是通过HttpClient去模拟提交那些网站的查询功能,这里是www.ip138.com,然后通过正则表达式去解析HttpClient相应内容,从里面抽取出手机归属地。同时对要查询的手机进行一个验证,具体代码请看如下:
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- import org.apache.commons.httpclient.HttpClient;
- import org.apache.commons.httpclient.NameValuePair;
- import org.apache.commons.httpclient.methods.PostMethod;
- import org.apache.commons.httpclient.params.HttpMethodParams;
- /**
- * 通过手机号码,获得该号码的归属地
- *
- * @author Administrator
- *
- */
- public class MobileFromUtil {
- //正则表达式,抽取手机归属地
- public static final String REGEX_GET_MOBILE=
- "(?is)(<tr[^>]+>[\\s]*<td[^>]+>[\\s]*卡号归属地[\\s]*</td>[\\s]*<td[^>]+>([^<]+)</td>[\\s]*</tr>)"; //2:from
- //正则表达式,审核要获取手机归属地的手机是否符合格式,可以只输入手机号码前7位
- public static final String REGEX_IS_MOBILE=
- "(?is)(^1[3|4|5|8][0-9]\\d{4,8}$)";
- /**
- * 获得手机号码归属地
- *
- * @param mobileNumber
- * @return
- * @throws Exception
- */
- public static String getMobileFrom(String mobileNumber) throws Exception {
- if(!veriyMobile(mobileNumber)){
- throw new Exception("不是完整的11位手机号或者正确的手机号前七位");
- }
- HttpClient client=null;
- PostMethod method=null;
- NameValuePair mobileParameter=null;
- NameValuePair actionParameter=null;
- int httpStatusCode;
- String htmlSource=null;
- String result=null;
- try {
- client=new HttpClient();
- client.getHostConfiguration().setHost("www.ip138.com", 8080, "http");
- method=new PostMethod("/search.asp");
- mobileParameter=new NameValuePair("mobile",mobileNumber);
- actionParameter=new NameValuePair("action","mobile");
- method.setRequestBody(new NameValuePair[] { actionParameter,mobileParameter });
- //设置编码
- method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "GB2312");
- client.executeMethod(method);
- httpStatusCode=method.getStatusLine().getStatusCode();
- if(httpStatusCode!=200){
- throw new Exception("网页内容获取异常!Http Status Code:"+httpStatusCode);
- }
- htmlSource=method.getResponseBodyAsString();
- if(htmlSource!=null&&!htmlSource.equals("")){
- result=parseMobileFrom(htmlSource);
- }
- } catch (RuntimeException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- method.releaseConnection();
- }
- return result;
- }
- /**
- * 从www.ip138.com返回的结果网页内容中获取手机号码归属地,结果为:省份 城市
- *
- * @param htmlSource
- * @return
- */
- public static String parseMobileFrom(String htmlSource){
- Pattern p=null;
- Matcher m=null;
- String result=null;
- p=Pattern.compile(REGEX_GET_MOBILE);
- m=p.matcher(htmlSource);
- while(m.find()){
- if(m.start(2)>0){
- result=m.group(2);
- result=result.replaceAll(" ", " ");
- }
- }
- return result;
- }
- /**
- * 验证手机号
- * @param mobileNumber
- * @return
- */
- public static boolean veriyMobile(String mobileNumber){
- Pattern p=null;
- Matcher m=null;
- p=Pattern.compile(REGEX_IS_MOBILE);
- m=p.matcher(mobileNumber);
- return m.matches();
- }
- /**
- * 测试
- * @param args
- * @throws Exception
- */
- public static void main(String[] args) throws Exception {
- System.out.println(getMobileFrom("13888888888"));
- }
- }
Java获取手机号码归属地相关推荐
- php解析手机号 归属地,PHP通过API获取手机号码归属地,api手机号码_PHP教程
PHP通过API获取手机号码归属地,api手机号码 该API接口自 2011年 SAE平台上线稳定运行至今,增加了17号段的支持,欢迎各种采集注限制 并发10 详细使用说明 接口地址:http://a ...
- php根据手机号区分地址,PHP判断手机号码归属地、获取手机号码归属地
PHP判断手机号码归属地.获取手机号码归属地: /** * 判断手机号码归属地 * @param string $phone * @param array $regions 省 * return bo ...
- php获取手机号码归属地
/*** [getCityByPhone 获取用户手机号归属地]* @param [integer] $phone [手机号]* @return [array] */public function g ...
- java获取手机号码归属地_手机号码归属地能否取消?这些热点问题,工信部回复了...
河南要闻 "手机号码归属地能否取消,新能源汽车电池能否统一标准,通信基站恶意低价竞标如何整治,环保设备能否让企业选得放心."随着全社会重视实体经济.发展工业和信息化的氛围更加浓厚, ...
- java 获取手机归属地_java 获取手机归属地
java 获取手机归属地 [2021-01-30 20:46:44] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/( ...
- android10获取手机号码,【android,10】10.调用web服务获取手机号码归属地
一.调用 web 服务获取号码归属地: 1.设置布局: android:layout_width="fill_parent" android:layout_height=" ...
- python获取手机号码归属地_Python批量获取并保存手机号归属地和运营商的示例
从Excel读取一组手机号码,批量查询该手机号码的运营商和归属地,并将其追加到该记录的末尾. import requests import json import xlrd from xlutils. ...
- Java 获取手机号码归属地以及运营商
maven配置 <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore --><depe ...
- Java实现手机号码归属地
1.pom引入 package com.singhand.back_stage.utils;import com.google.i18n.phonenumbers.PhoneNumberToCarri ...
最新文章
- Json 学习 JSONObject 和 JSONArray
- Java安全编码之用户输入
- ERROR 1044 (42000): Access denied for user ''@'localhost' to database
- python图形化编程工具哪个好_mPython(图形化编程软件) V0.5.0 官方版
- C#软件授权、注册、加密、解密模块源码解析并制作注册机生成license
- 2.10.PHP7.1 狐教程-【PHP 函数】
- 下标随着页面链接的跳转
- 哪里下载全部股票历史数据?下载全部股票历史数据怎么下?
- protobuf与protoc
- 虚拟偶像养成记:人工智能人格化与IP化打造出完美“爱豆”
- 反虚拟机、反沙箱技术整理汇总
- QT 自学内容 day03 listWidget ,treeWidget,tableWidget ,stackedWidget,模态,和非模态 多种 对话框的的使用
- 学猫叫用计算机歌词,抖音学猫叫是什么歌 学猫叫歌曲歌词
- 苹果 App Store 最贵的 App,评论亮了!!
- 《Python全栈系列教程》目录
- houdini环境变量服务器文件读不了,Windows下在普通命令行窗口里初始化Houdini环境...
- html css 等比例缩放(记录)
- MATLAB_LSB_隐藏水印和提取,附代码
- c# 结构体定义中有数组
- Isolate microTask event Isolate.spawn() compute
热门文章
- java毕业生设计蛋糕销售网站演示录像2020计算机源码+系统+mysql+调试部署+lw
- 7-5 复数四则运算
- Online Judge常见错误
- [原创]PHP 异常错误处理
- 基于微服务架构的餐饮系统的设计与实现计算机毕业设计源码86393
- java 正则 单个字符_正则表达式教程之匹配单个字符详解
- 200行Python实现效果逆天的连连看外挂
- python 彩票自动下单,从「获取数据」到「自动下单」 | 《Python量化投资入门》培训...
- CSS justify-content 属性
- 【C语言】3天速刷C语言(指针初识)