`
jilong-liang
  • 浏览: 475225 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

使用Jsoup去解析查询手机号归属地

阅读更多
package com.test;

import java.io.IOException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.httpclient.HttpException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/***
 * 使用Jsoup去解析查询手机号归属地
 * 原理:抓取再解析html...
 * @author ljl
 *
 */
public class Test2 {

	/**
	 * 正则表达式,抽取手机归属地
	 */
	public static final String REGEX_GET_MOBILE = "(?is)(<tr[^>]+>[\\s]*<td[^>]+>[\\s]*卡号归属地[\\s]*</td>[\\s]*<td[^>]+>([^<]+)</td>[\\s]*</tr>)"; // 2:from
	/**
	 * 正则表达式,审核要获取手机归属地的手机是否符合格式,可以只输入手机号码前7位
	 */
	public static final String REGEX_IS_MOBILE = "(?is)(^1[3|4|5|8][0-9]\\d{4,8}$)";

	/**
	 * 从www.ip138.com
	 * 返回的结果网页内容中获取手机号码归属地,结果为:省份 城市
	 * @param htmlSource
	 * @return
	 */
	public static String parseMobileFrom(String htmlSource){
		Pattern p=null;
		Matcher m=null;
		String result=null;
		p=Pattern.compile(REGEX_GET_MOBILE);
		m=p.matcher(htmlSource);
		
		while(m.find()){
			if(m.start(2)>0){
				result=m.group(2);
				result=result.replaceAll("&nbsp;", " ");
			}
		}
		return result;
	}
	
	/**
	 * 验证手机号
	 * @param mobileNumber
	 * @return
	 */
	public static boolean veriyMobile(String mobileNumber){
		Pattern p=null;
		Matcher m=null;
		p=Pattern.compile(REGEX_IS_MOBILE);
		m=p.matcher(mobileNumber);
		return m.matches();
	}
	public static void main(String[] args) throws Exception {
		String mobile="13800138000";
		getNetFormMobileInfo(mobile);

	}

	private static void getNetFormMobileInfo(String mobileNumber) throws IOException, HttpException {
		if(!veriyMobile(mobileNumber)){
			try {
				throw new Exception("不是完整的11位手机号或者正确的手机号前七位");
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		StringBuffer buffer = new StringBuffer();
		String url = "http://www.ip138.com";
		buffer.append(url);
		buffer.append(":8080");//端口
		buffer.append("/");
		buffer.append("search.asp?");
		buffer.append("mobile=" + mobileNumber);
		buffer.append("&action=mobile");
		 
		String basePath = buffer.toString();
		 
		Document doc=Jsoup.parse(new URL(basePath), 3000); 
		if(doc!=null){
			//从class=tdc样式下面抓取  
			 Elements tdcs = doc.getElementsByAttributeValue("class", "tdc");  
		        for(Element td:tdcs){  
		        	//从class=tdc2样式下面抓取  
		        	Elements tdc2s=td.getElementsByAttributeValue("class","tdc2");
		        	 for(Element tdc:tdc2s){
		        		 //System.out.println(tdc);
		        		 //<[^>]+>去掉html标签,去掉&nbsp;html标签的空格
		        		 String mobileInfo=tdc.select("td").html().replaceAll("<[^>]+>", "").replaceAll("&nbsp;", "").replaceAll("-->", "");
		        		 System.out.println(mobileInfo);
		        	 }
		        }  
		}else{
			System.err.println("网络异常~~");
		}
	}
}

 

1
1
分享到:
评论
1 楼 gnomewarlock 2014-04-18  
标题应该是,解析html

相关推荐

    使用Jsoup解析html网页

    **Jsoup:HTML解析神器** Jsoup是一款Java库,它为了解析、提取以及操作HTML提供了强大的工具。...Jsoup以浏览器的方式解析HTML,使得我们可以方便地通过CSS选择...学习和掌握Jsoup的使用,将极大地提升你的Web开发效率。

    Android使用Jsoup技术解析HTML

    **Android使用Jsoup技术解析HTML** Jsoup是一个Java库,专为处理真实世界的HTML而设计。在Android开发中,我们经常需要从网页抓取数据,比如解析新闻标题、获取图片链接或者提取用户评论等。Jsoup提供了一种简单、...

    使用Jsoup库解析HTML、XML或URL链接中的DOM节点

    在压缩包文件"JsoupDemo"和"Jsoup"中,可能包含了使用Jsoup进行DOM解析的示例代码。这些代码通常会展示如何连接到URL,选择元素,提取数据,以及进行一些基本的DOM操作。通过阅读和运行这些示例,你可以更深入地了解...

    jsoupAPI解析html

    **jsoup API解析HTML** jsoup是一个非常强大的Java库,专为处理真实世界的HTML而设计。它提供了方便的API,用于提取和操作数据,使用DOM,CSS和jQuery-like方法。在深入jsoup的API之前,我们需要理解HTML解析的重要...

    android使用jsoup 解析html文件

    - `jsoup`并不支持完整的DOM解析,对于复杂的DOM操作,可能需要考虑其他库,如`Jsoup`与`jsoup-dom`结合使用。 总结,`jsoup`为Android开发者提供了一个强大且易于使用的工具,可以方便地解析和操作HTML内容。通过...

    Jsoup解析与使用

    **Jsoup解析与使用** Jsoup是一款非常实用的Java库,专为网页抓取和解析而设计。...通过熟练掌握Jsoup的使用,你能够轻松地实现自定义的数据抓取和解析逻辑,为你的应用程序注入源源不断的信息活力。

    httpClient采集jsoup解析

    例如,如果你想要抓取一个新闻网站的最新文章标题,可以先使用HttpClient发送请求获取网页源码,再用Jsoup解析HTML,找到包含文章标题的元素: ```java CloseableHttpClient httpClient = HttpClients.create...

    Jsoup库文件;Jsoup解析Java包

    使用Jsoup库文件,开发者可以快速地构建功能丰富的Java应用,实现高效的数据抓取和处理。在实际开发中,结合Java的IO流和多线程技术,可以进一步提升数据处理的速度和效率。 在压缩包"Jsoup库文件"中,可能包含以下...

    使用Jsoup解析HTML数据的Demo

    这是使用Jsoup解析HTML得到数据的一个小例子,具体的使用方法请参见我的博客:http://blog.csdn.net/ProgramChangesWorld/article/details/47134255

    jxl报表,报表导入解析,jsoup报表解析

    在使用`jsoup`解析Excel文件时,我们需要先将`.xlsx`文件解压缩,然后定位到包含工作表数据的XML文件,如`/xl/worksheets/sheet1.xml`。`jsoup.parse()`方法可以用来解析这个XML文件,从中获取表格的结构和数据。...

    Jsoup解析html+xml

    Jsoup是一款非常强大的Java库,专门用于处理HTML和XML文档,提供了一系列简洁的API来抓取、解析、修改以及格式化这些文档。...通过熟练掌握Jsoup的API和使用技巧,可以轻松地完成各种网页数据的解析和处理任务。

    一个用jsoup框架解析html的项目

    如果需要进一步分析这些数据,可以将它们加载到内存,然后使用JSoup进行解析和处理。 总之,JSoup是一个强大的工具,对于任何需要处理HTML的Java项目来说,它都是一个优秀的选择。结合多线程技术,可以高效地处理...

    用Jsoup解析html的所有jar包

    这个压缩包文件“用Jsoup解析html的所有jar包”显然是包含了使用Jsoup进行HTML解析所需的全部依赖。 首先,我们需要了解Jsoup的基本用法。Jsoup的核心功能在于它能够通过连接到一个URL或读取本地HTML文件来获取HTML...

    在android中使用jsoup解析页面链接

    implementation 'org.jsoup:jsoup:1.14.x' // 使用最新的Jsoup版本号 } ``` 在描述中提到的博客链接,"http://www.blogjava.net/pengo/archive/2011/03/14/346176.html的附件源码",可能提供了示例代码或更详细的...

    Jsoup解析html的示例

    这将确保你的项目可以使用Jsoup的所有功能。 2. **连接与解析** 使用Jsoup的`connect()`方法来建立到网页的连接,然后调用`get()`方法获取HTML内容: ```java Document doc = Jsoup.connect(...

    Jsoup HTML解析器For Java 在Java程序中使用JQuery操作DOM

    Jsoup HTML解析器For Java 在Java程序中使用JQuery操作DOM 模式识别的新技术 狂顶

    使用Jsoup对Html文件解析

    在本文中,我们将深入探讨如何使用Jsoup解析HTML文件,并进一步将解析的数据导出到Excel表格。 首先,我们需要理解Jsoup的基本用法。Jsoup的核心在于`Connection`和`Document`对象。`Connection`用于建立与网页的...

    Jsoup操作解析Html文件

    Jsoup是一款非常强大的Java库,专门用于处理和解析HTML文档。它提供了丰富的API,使得开发者可以轻松地在代码中操作HTML,实现对...记得,通过阅读和实践这些示例,可以更好地掌握Jsoup的用法,并解决实际遇到的问题。

    jsoup解析HTML

    **JSoup:强大的HTML解析库** JSoup是一个用于处理实际世界HTML的Java库。它提供了非常方便的API,用于提取...在"NewSipder"项目中,JSoup可以帮助我们高效地解析和提取网页信息,为网络爬虫的实现提供了坚实的基础。

    Jsoup解析网页工具类

    **Jsoup:强大的Java网页解析库** Jsoup是一款优秀的开源Java库,专为网页解析而设计,具有简单易用的API,使得从HTML文档中提取结构化数据变得轻而易举。它支持HTML5和HTML4标准,允许开发者在处理网页内容时,...

Global site tag (gtag.js) - Google Analytics