我们需要进一步缩小范围。 以什么为筛选条件呢?位置。 目前我国使用的手机号码为11位数字,我们的手机号可以分为三段,都有不同的编码含义:前3位是网络识别号、4-7位是地区编码(HLR归属位置寄存器)、8-11位是用户号码(随机分配)。 现在,我们已经得到了,手机号码的前三位代表了运营商,之后四位代表了地区。显然,我们可以通过遍历手机号中的4-7位,即一万个数据,以所属地区为筛选条件进一步缩小范围。 此处,我采用百度APIStore中的通过手机号查询归属地的API来进行查询,该API查询返回结果如下(测试了一个手机号,已略去):
{"data":{"areacode":"0510","city":"无锡市","operator":"电信177卡","phone":"177******77","postcode":"214000","province":"江苏"},"error":0,"msg":"succeed"} 遍历代码如下(以查询所在地“上海”为例): public static void main(String[] args0) throws IOException { FileWriter fileWriter = new FileWriter("/Users/huang/test/test1.txt"); String httpUrl = "http://apis.baidu.com/chazhao/mobilesearch/phonesearch"; String httpArg = ""; for (int i = 0; i= 1000) { httpArg = "phone=178" + String.valueOf(i) + "0077"; } else if (i >= 100) { httpArg = "phone=1780" + String.valueOf(i) + "0077"; } else if (i >= 10) { httpArg = "phone=17800" + String.valueOf(i) + "0077"; } else { httpArg = "phone=178000" + String.valueOf(i) + "0077"; } String jsonResult = request(httpUrl,