从IP138上获取数据,查询多个IP的归宿地
来源:互联网 发布:linux 快速启动matlab 编辑:程序博客网 时间:2024/04/29 04:27
准备一个名为ip.txt的文件(如果你创建的文件名不一样,要修改相应代码),放在程序根目录下(如果你放的路径不一样也要修改相应代码),文件内容如下(每一行输入一个IP)
输入多个IP可以查多个
步骤:
getContentFromUrl();方法是获取IP138ip查询页面的内容(有兴趣的朋友可以改进这个函数直接从网页获取的内容截取出归属地。writeContentToFile();和getContentFromFile();方法可以不用)
writeContentToFile();方法作用是将从IP138ip查询页面获取的内容写到一个文件中去
getContentFromFile();方法作用是读取一个文件数据(这个例子就是读取上一个方法写入的文件)
getSpFromContent();方法是读取文本中的归属地(读取上个方法返回的字符串内容,截取出归属地)
getIpSp();方法整合上面的方法,传入一个存放有IP的文件地址,读取IP的归属地
方法写的有点复杂,有兴趣的朋友认真看注释还是可以看懂的
源代码:
package test1;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.PrintWriter;import java.net.MalformedURLException;import java.net.URL;import java.util.Scanner;public class IpQuery {/** * 从网页上获取数据 * @param wUrl URL地址 * @param charset 字符集 * @return 网页上的数据,string类型 */public static String getContentFromUrl(String ip,String charset) {StringBuffer stringBuffer = new StringBuffer();try {//传入一个ipURL url= new URL("http://www.ip138.com/ips138.asp?ip="+ip+"&action=2");//(获取这个url的InputStream,创建一个scanner接收)从这个ip的查询返回页面抓取数据,charset指定页面编码格式Scanner scanner = new Scanner(url.openStream(),charset);//将从url获取的内容存到一个StringBuffer里while(scanner.hasNextLine()){stringBuffer.append(scanner.nextLine()+"\r\n");}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}//返回这个stringBuffer的toString()方法return stringBuffer.toString();}/** * 功能:保存数据到文件中 * @param fileName 目标文件名(自定义路径) * @param content 要保存的内容(取从网上获取数据函数的返回值) * @return */public static boolean writeContentToFile(String fileName,String content) {try {//把content内容写到名字为fileName的文件中(如a.txt)PrintWriter printWriter = new PrintWriter(fileName);printWriter.append(content);//添加content内容printWriter.flush();printWriter.close();return true;} catch (FileNotFoundException e) {e.printStackTrace();return false;}}/** * 从文件读取数据 * @param fileName 文件名(路径) * @return 文件的文本内容 */public static String getContentFromFile(String fileName) {StringBuffer content = new StringBuffer();Scanner scanner;try {//获取文件名为fileName的输入流scanner = new Scanner(new FileInputStream(fileName));while(scanner.hasNextLine()){//用一个StringBuffer类型 接收每一行返回的字符串content.append(scanner.nextLine()).append("\r\n");}} catch (FileNotFoundException e) {e.printStackTrace();}return content.toString();}/** * 从文本归属地和获取运营商 * @param content * @return 归属地和运营商名称 */public static String getSpFromContent(String content) {int beginIndex = content.indexOf("数据:");int endIndex = content.indexOf("</li>");//截取getContentFromFile()方法返回的字符串,从"数据:"截取到"</li>"String sp = content.substring(beginIndex+3, endIndex);return sp;}/** * 获取IP的归属地(将前面的方法整合) * @param fileName 存储IP的txt文件的文件路径 * @return 归属地 */@SuppressWarnings("resource")public static String getIpSp(String fileName) {String content1="";String content2="";Scanner scanner;try {//获取文档的内容scanner = new Scanner(new FileInputStream(fileName));while(scanner.hasNextLine()){//将文档中每一行的IP传到getContentFromUrl()方法中String content = getContentFromUrl(scanner.nextLine(), "gb2312");//将getContentFromUrl()方法返回的字符串写到一个名字为d.html的文件中writeContentToFile("d.html",content);//再从名字为d.html的文件中获取所有的内容content1 = getContentFromFile("d.html");//把从名字为d.html的文件中获取所有的内容放到获取归属地的方法中(getSpFromContent()方法)content2+=getSpFromContent(content1)+"\r\n";}} catch (FileNotFoundException e) {e.printStackTrace();return "-1";}return content2;}public static void main(String[] args) {//输入要查询的保存有ip的文档System.out.println(getIpSp("ip.txt"));}}
writeContentToFile();方法作用是将从IP138ip查询页面获取的内容写到一个文件中去
0 0
- 从IP138上获取数据,查询多个IP的归宿地
- linux c方式 从www.ip138.com获取IP数据
- java调用ip138实现ip地址查询
- IP138 IP地址查询 php实例
- 4、调用WebService查询手机号码归宿地
- 借助IP138网站来实现本地系统的IP,身份证号,手机号码查询功能
- 从网上获取手机归属地查询
- [Python] 从ip138网站爬取ip所处地点
- ASP.NET通过IP138来获取外面IP地址
- C语言使用socket通过IP138获取外网IP
- 查询ip归属地的shell脚本
- java调用IP138获取本机IP以及通过IP地址获取区域名称
- Mysql联接查询-JOIN-从多个关联的表中查询数据
- 查询IP所属地
- ip查询归属地
- IP归属地查询
- Android手机号码归属地的查询(使用聚合数据API,获取JSON数据并解析)
- 从页面上获取多选框的值进数据库查询
- poj2365
- 欢迎使用CSDN-markdown编辑器
- MyBatis(九) resultType 和 resultMap 总结
- poj2388
- react native fetch
- 从IP138上获取数据,查询多个IP的归宿地
- poj2390
- 线程中sleep和wait有什么区别
- poj2406
- poj2407
- birt使用JNDI配置数据源
- linux设备驱动归纳总结(六):1.中断的实现
- Javascript之深入浅出prototype
- Equals和“==”