从IP138上获取数据,查询多个IP的归宿地
2017-02-10 09:14
330 查看
准备一个名为ip.txt的文件(如果你创建的文件名不一样,要修改相应代码),放在程序根目录下(如果你放的路径不一样也要修改相应代码),文件内容如下(每一行输入一个IP)
输入多个IP可以查多个
步骤:
getContentFromUrl();方法是获取IP138ip查询页面的内容(有兴趣的朋友可以改进这个函数直接从网页获取的内容截取出归属地。[b]writeContentToFile();和getContentFromFile();方法可以不用[/b])
writeContentToFile();方法作用是将从IP138ip查询页面获取的内容写到一个文件中去
getContentFromFile();方法作用是读取一个文件数据(这个例子就是读取上一个方法写入的文件)
getSpFromContent();方法是读取文本中的归属地(读取上个方法返回的字符串内容,截取出归属地)
getIpSp();方法整合上面的方法,传入一个存放有IP的文件地址,读取IP的归属地
方法写的有点复杂,有兴趣的朋友认真看注释还是可以看懂的
源代码:
writeContentToFile();方法作用是将从IP138ip查询页面获取的内容写到一个文件中去
输入多个IP可以查多个
步骤:
getContentFromUrl();方法是获取IP138ip查询页面的内容(有兴趣的朋友可以改进这个函数直接从网页获取的内容截取出归属地。[b]writeContentToFile();和getContentFromFile();方法可以不用[/b])
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 { //传入一个ip URL 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查询页面获取的内容写到一个文件中去
相关文章推荐
- 使用OPENDATASOURCE 函数,在查询中实现从ACCESS获取数据,并插入SQLSERVER2000表中
- VB.net 查询获取数据库数据信息
- jdbc获取符合查询条件的记录数据---ResultSet
- JPA 本地查询,结果数据获取错误
- 解决web程序获取不到his接口数据(通过查询his SQL server 视图)
- sql获取本周内的数据,本月查询
- 使用OPENDATASOURCE 函数,在查询中实现从ACCESS获取数据,并插入SQLSERVER2000表中
- 根据经纬度查询地址并对获取的json数据进行解析
- 根据IP获取地址信息的方法(无数据库版)
- IP138查询工具
- VB.net查询获取数据库数据信息
- c#ip138自动获取代码
- 如何将QQWry.Dat导出为access数据,导入mssql及查询纯真导入后的ip数据
- 调用ip138的页面获取IP地址
- c#ip138自动获取代码
- 怎样写一个获取数据函数:用TCP/IP通讯,向服务端发送命令,并从服务端获得返回数据.
- 借助IP138网站来实现本地系统的IP,身份证号,手机号码查询功能
- ajax操作ajax异步获取数据,查询用户数据
- sqlserver 建立跨IP跨数据库查询配置数据链接
- Ibatis获取xml数据查询