公司里需要手机号段归属地资料,手头上没有现成的数据,就自己做了个采集器,连到ip138.com网站上进行采集。这是最终运行界面:
首先在网页上输入至少7位的手机号码段进行查询,通过查看查询页面的HTML,发现将会提交两个参数:mobile=手机号码&action=mobile,然后对结果页面的HTML进行分析,找到关键的两行HTML:
<TD width="130" align="center" noswap>卡号归属地</TD>
<TD width=* align="center" class=tdc2>广东 广州</TD>
接下来的事情就是利用HttpURLConnection进行查询请求,并将返回的结果用正则表达式进行提取。程序的功能并不复杂,设计上也就简单地做了两个类,一个负责数据的分析和采集;另一个为Main主程序,负责用AWT构建界面和创建一个后台线程来调用采集类进行手机号段范围的循环提交请求,并将获取的数据写入文本文件。
package com.funper.collector;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.regex.Pattern;
import jav