香港金融保险社区

Python教程 | 手机号码归属地查询,用这个API就行了

原视界科技2020-07-09 12:31:08

银行账号归属地查询

点击蓝字关注我们



正文共: 2556字 3

银行账号归属地查询 预计阅读时间: 7分钟



作为计算机的小白,相信对API不会陌生了,就算没有使用过,也是一遍遍听说了。



API,中文名称为应用程序编程接口(全称为Application Programing Interface)


API是操作系统提供给应用程序的一个接口,应用程序可以通过调用它获取信息数据,执行程序命令。


它也是一个中间件(是提供系统软件和应用软件之间连接的软件),可以为各种不同平台提供数据共享。


通过使用API,可以让我们减轻很多编程中繁杂的任务。




手机号归属地查询,这是个老话题了,打个电话就能查看对方是哪里的,哪个省,哪个市,当看到陌生电话就可以查一下了。


开始,我用Java调用了一个淘宝的API,查出来整理数据需要用到JSONObject,需要导入下载以下的Json包还有其他几个包。


commons-beanutils-1.7.0.jar
commons-lang-2.1.jar
ezmorph-1.0.2.jar
json-lib-1.1-jdk15.jar


没有导入这几个包,所以用字符串替换做了一个。


package api_practice;
import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.StringBufferInputStream;import java.net.*;import java.util.Scanner;
public class Phone_Address {  public static final String CODE="gbk";  public static void main(String[] args) {    System.out.println("请输入需要查询的手机号码:");    Scanner scan = new Scanner(System.in);    String number = scan.nextLine();    System.out.println("请稍后,正在为您加载数据……");    String str = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=";    try {      URL url = new URL(str+number);      URLConnection con = url.openConnection();      con.setReadTimeout(60 * 2000);      con.setConnectTimeout(10 * 1000);      con.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36");      con.setDoOutput(true);      con.connect();      String inputLine,line;      int count=1;      InputStream in = con.getInputStream();      BufferedReader br = new BufferedReader(new InputStreamReader(in,CODE));      StringBuffer sb = new StringBuffer();      while((inputLine=br.readLine())!=null) {        if(count>2&&count<7)        {          if(inputLine.indexOf("'")!=0)          inputLine  = inputLine.replaceFirst("'", "Q");          line = inputLine.substring(inputLine.indexOf("Q")+ 1,inputLine.indexOf("'"));          switch(count)          {            case 2:System.out.print("号码所在省份:");break;            case 3:System.out.print("号码运营商:");break;            case 4:System.out.print("查询号码:");break;            case 5:System.out.print("所查:");break;            case 6:System.out.print("所在区号:");break;          }          System.out.println(line);        }        count++;      }      }catch(Exception e) {      e.printStackTrace();    }  }}





其实这个API不够好,没有省级以下的城市,所以我又找了一个API。


用Python的eval()转换字符串str类型为字典dict类型。这里用Python3版本进行编程。


import requestsimport jsonimport random
print('************欢迎查询手机所属地*************')number = input('请输入需要查询的手机号码:')url = 'http://api.k780.com/?app=phone.get&phone='+number+'&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json'html = requests.get(url).text

dit = eval(html)
if dit['success']=='1':    if dit['result']['status']== 'NOT_ATT':        print('查询不到该号码的相关信息!!!')    else:        print('所查询手机号码:'+number)        print('卡类型:',dit['result']['ctype'])        print('所属运营商:',dit['result']['operators'])        print("号码所在地:",dit['result']['style_citynm'])else:    print('网络查询出现错误')



看运行的结果,比前面那个API多出来好几个东西,号码卡类型,号码所在的市区,Python写出来也比Java精简很多。


银行账号归属地查询