jsoup实战之抓取大众点评网区域省份城市信息
2014-03-30 10:34
495 查看
需求:从大众点评网抓取 所有区域,省份,城市信息
所使用技术:manve+jsoup.1.7.3+httpclient.4.3.3
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>chpro</groupId>
<artifactId>souchisouwan-example</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>souchisouwan-example Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.3</version>
</dependency>
<!-- jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.3</version>
</dependency>
</dependencies>
<build>
<finalName>souchisouwan-example</finalName>
</build>
</project>
JsoupAction类
HttpUtil类
控制台打印的部分结果:
PS:希望大家有空关注我的网站哦 我网站的域名是:http://www.souchisouwan.com
实例项目在 开源中国的git上 地址是:http://git.oschina.net/chpro/coushicouwan_example.git 欢迎大家下载
所使用技术:manve+jsoup.1.7.3+httpclient.4.3.3
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>chpro</groupId>
<artifactId>souchisouwan-example</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>souchisouwan-example Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.3</version>
</dependency>
<!-- jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.7.3</version>
</dependency>
</dependencies>
<build>
<finalName>souchisouwan-example</finalName>
</build>
</project>
JsoupAction类
package com.souchisouwan.example; import java.util.ArrayList; import java.util.List; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import com.souchisouwan.util.HttpUtil; /** * 抓取大众点评网区域省份城市信息 * @author Administrator * */ public class JsoupAction { public static void main(String[] args)throws Exception { String uri = "http://www.dianping.com/citylist"; String html = HttpUtil.httpPost(uri); //System.out.println(html); //抓取地区 Document doc = Jsoup.parse(html);//解析HTML字符串返回一个Document实现 Elements links = doc.select(".root"); for(Element link:links){ String area = link.select(".vocabulary").html(); //获得地区 Elements shenfens = link.select(".terms"); //获得省份 System.out.println(area); //打印地区 for(Element sf:shenfens){ String shenfen = sf.select("dt").html(); System.out.println("\t"+shenfen); //打印省份 Elements shiqus = sf.select("dd>a"); for(Element sq:shiqus){ String sqtemp = sq.html(); String pytemp = sq.attr("href").substring(1); System.out.println("\t\t"+(sqtemp.indexOf("strong")==-1?sqtemp:sqtemp.substring(8,sqtemp.length()-9))+" "+pytemp); } //获取更多 String gengduo = sf.select("dd>span").last().attr("data-v"); List<String> gengduos = more(gengduo); for(String gd:gengduos){ System.out.println("\t\t"+gd); } } //System.out.println(link.toString()); } } //获取更多操作 public static List<String> more(String index)throws Exception{ List<String> result = new ArrayList<String>(); String uri = "http://www.dianping.com/ajax/json/index/citylist/getCitylist?_nr_force=122&do=getbyprovince&pID="+index; String html = HttpUtil.httpPost(uri); Document doc = Jsoup.parse(html);//解析HTML字符串返回一个Document实现 Elements links = doc.select("a"); for(Element link:links){ String temp = link.html(); String pytemp = link.attr("href"); result.add(temp.substring(0,temp.indexOf("&"))); } return result; } }
HttpUtil类
package com.souchisouwan.util; import java.io.IOException; import java.util.Map; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; /** * http帮助类 * @author Administrator * */ public class HttpUtil { private static HttpClient client = new DefaultHttpClient(); /** * post请求 * @param url 请求地址 * @param param 参数 * @return */ public static String httpPost(String url,Map<String,String> param){ return null; } /** * post请求 * @param url 请求地址 * @return */ public static String httpPost(String url){ HttpPost post = new HttpPost(url); String result = ""; try { HttpResponse res = client.execute(post); result = EntityUtils.toString(res.getEntity()); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } /** * get请求 * @param url 请求地址 * @return */ public static String httpGet(String url){ return null; } /** * get请求 * @param url 请求地址 * @param param 参数 * @return */ public static String httpGet(String url,Map<String,String> param){ return null; } /** * https post请求 * @param url 请求地址 * @param param 参数 * @return */ public static String httpsPost(String url,Map<String,String> param){ return null; } /** * https post请求 * @param url 请求地址 * @param param 参数 * @return */ public static String httpsPost(String url){ return null; } /** * https get请求 * @param url * @return */ public static String httpsGet(String url){ return null; } }
控制台打印的部分结果:
华北东北 河北 石家庄 shijiazhuang 保定 baoding 秦皇岛 qinghuangdao 邯郸 handan 廊坊 langfang 唐山 tangshan 邢台 xingtai 承德 chengde 沧州 cangzhou 张家口 zhangjiakou 衡水 hengshui 辛集市 藁城市 晋州市 新乐市 鹿泉市 井陉县 正定县 栾城县 行唐县 灵寿县 高邑县 深泽县 赞皇县 无极县 平山县 元氏县 赵县 宣化县 张北县 康保县 沽源县 尚义县 蔚县 阳原县 怀安县 万全县 怀来县 涿鹿县 赤城县 崇礼县 承德县 兴隆县 平泉县 滦平县 隆化县 丰宁满族自治县 宽城满族自治县 围场满族蒙古族自治县 昌黎县 抚宁县 卢龙县 青龙满族自治县 遵化市 迁安市 滦县 滦南县 乐亭县 迁西县 玉田县 唐海县 霸州市 三河市 固安县 永清县 香河县 大城县 文安县 大厂回族自治县 定州市 涿州市 安国市 高碑店市 满城县 清苑县 易县 徐水县 涞源县 定兴县 顺平县 唐县 望都县 涞水县 高阳县 安新县 雄县 曲阳县 阜平县 博野县 蠡县 冀州市 深州市 枣强县 武邑县 武强县 饶阳县 安平县 故城县 景县 阜城县 泊头市 任丘市 黄骅市 河间市 沧县 青县 东光县 海兴县 盐山县 肃宁县 南皮县 吴桥县 献县 孟村回族自治县 南宫市 沙河市 邢台县 临城县 内丘县 柏乡县 隆尧县 任县 南和县 宁晋县 巨鹿县 新河县 广宗县 平乡县 威县 清河县 临西县 武安市 邯郸县 临漳县 成安县 大名县 涉县 磁县 肥乡县 永年县 邱县 鸡泽县 广平县 馆陶县 魏县 曲周县 山西 太原 taiyuan 大同 datong 晋中 jinzhong 临汾 linfen 长治 changzhi 忻州 xinzhou 运城 yuncheng 晋城 jincheng 朔州 shuozhou 阳泉 yangquan 吕梁 lvliang 古交市 清徐县 阳曲县 娄烦县 山阴县 应县 右玉县 怀仁县 阳高县 天镇县 广灵县 灵丘县 浑源县 左云县 大同县 平定县 盂县 潞城市 长治县 襄垣县 屯留县 平顺县 黎城县 壶关县 长子县 武乡县 沁县 沁源县 高平市 泽州县 沁水县 阳城县 陵川县 原平市 定襄县 五台县 代县 繁峙县 宁武县 静乐县 神池县 五寨县 岢岚县 河曲县 保德县 偏关县 介休市 榆社县 左权县 和顺县 昔阳县 寿阳县 太谷县 祁县 平遥县 灵石县 侯马市 霍州市 曲沃县 翼城县 襄汾县 洪洞县 古县 安泽县 浮山县 吉县 乡宁县 蒲县 大宁县 永和县 隰县 汾西县 孝义市 汾阳市 文水县 中阳县 兴县 临县 方山县 柳林县 岚县 交口县 交城县 石楼县 内蒙古 呼和浩特 huhehaote 包头 baotou 呼伦贝尔 hulunbeier 赤峰 chifeng 鄂尔多斯 eerduosi 通辽 tongliao 乌海 wuhai 兴安盟 xingan 巴彦淖尔 bayannaoer 锡林郭勒 xilinguole 阿拉善 alashan 乌兰察布 wulanchabu 锡林浩特市 乌兰浩特市 托克托县 武川县 和林格尔县 清水河县 固阳县 宁城县 林西县 霍林郭勒市 开鲁县 满洲里市 扎兰屯市 牙克石市 根河市 额尔古纳市 丰镇市 卓资县 化德县 商都县 兴和县 凉城县 五原县 磴口县 阿尔山市 突泉县
PS:希望大家有空关注我的网站哦 我网站的域名是:http://www.souchisouwan.com
实例项目在 开源中国的git上 地址是:http://git.oschina.net/chpro/coushicouwan_example.git 欢迎大家下载
相关文章推荐
- java爬虫实战简单用Jsoup框架进行网页爬虫(如抓取网页图片)
- python网络爬虫实战3——抓取新闻内文相关信息
- Scrapy实战篇(八)之简书用户信息全站抓取
- iOS 开发 如何获得用户当前位置(通过经纬度获得城市、省份等信息)
- 百度地图 根据坐标,获取省份,城市,区域
- 最简单js 获取当前国家 省份 城市等信息
- Python爬虫实战---抓取图书馆借阅信息
- HttpClient+Jsoup 抓取网页信息(网易贵金属为例)
- 爬虫框架Scrapy实战之批量抓取招聘信息
- 网页信息抓取进阶 支持Js生成数据 Jsoup的不足之处
- 一个简单的基于Jsoup的HTML信息抓取Java程序
- Python爬虫框架Scrapy实战之批量抓取招聘信息
- java获取客户端登陆地址信息(国家、省份、城市等)
- 【极客学院】-python学习笔记-4-单线程爬虫 (提交表单抓取信息,实战练习)
- JS实战 · 级联菜单选择省份和城市
- Python爬虫框架Scrapy实战 - 抓取BOSS直聘招聘信息
- HttpClient+Jsoup 抓取网页信息
- HTML5_添加用户信息的操作以及省份城市二级联动
- hive UDF 分享 通过IP地址获取IDC//省份/城市的信息http://my.oschina.net/wangjiankui/blog/263994
- 【房价网房价信息爬虫】整站40万条房价数据并行抓取,可更换抓取城市