网页抓取手机号(Google开发的libphonenumber库最新的话见查询不出包版本介绍 )
优采云 发布时间: 2022-04-20 13:45网页抓取手机号(Google开发的libphonenumber库最新的话见查询不出包版本介绍
)
谷歌开发的libphonenumber库主要用于用户解析、格式化、存储、验证国际手机号码。开源后可以引入最新的jar包,调用对应方法获取对应手机号归属地等信息。 由于原理是在jar包中收录所有手机号信息内容,如果导入的jar包不是最新的,则可能无法查询到最新批次的手机号内容。因此,需要在对应的View中,随着时间的推移更新jar包版本。具体代码如下:
在pom中引入对应的jar包(以下geocoder和libphonenumbere为最新版本):
com.googlecode.libphonenumber
geocoder
2.99
com.googlecode.libphonenumber
libphonenumber
8.9.14
com.googlecode.libphonenumber
carrier
1.5
/**
* 根据手机号获取归属地
* @param phoneNum
* @return
*/
public static String getCity(String phoneNum){
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
PhoneNumberOfflineGeocoder phoneNumberOfflineGeocoder = PhoneNumberOfflineGeocoder.getInstance();
String language ="CN";
Phonenumber.PhoneNumber referencePhonenumber = null;
try {
referencePhonenumber = phoneUtil.parse(phoneNum, language);
} catch (NumberParseException e) {
e.printStackTrace();
}
//手机号码归属城市 city
String city= phoneNumberOfflineGeocoder.getDescriptionForNumber(referencePhonenumber,Locale.CHINA);
return city;
}
/**
* 根据手机号和国家代码(中国代码86) 判断手机运营商
* @param phoneNumber
* @param countryCode
* @return
*/
public static String getCarrier(String phoneNumber, String countryCode){
PhoneNumberToCarrierMapper carrierMapper = PhoneNumberToCarrierMapper.getInstance();
int ccode = Integer.valueOf(countryCode);
long phone = Long.valueOf(phoneNumber);
Phonenumber.PhoneNumber pn = new Phonenumber.PhoneNumber();
pn.setCountryCode(ccode);
pn.setNationalNumber(phone);
//返回结果只有英文,自己转成成中文
String carrierEn = carrierMapper.getNameForNumber(pn, Locale.ENGLISH);
String carrierZh = "";
switch (carrierEn) {
case "China Mobile":
carrierZh += "移动";
break;
case "China Unicom":
carrierZh += "联通";
break;
case "China Telecom":
carrierZh += "电信";
break;
default:
break;
}
return carrierZh;
}