从国家统计局爬取山东省市区县乡镇
项目需要,写了个简单的程序爬去山东省市区县乡镇区划信息。
依赖的jar包来源于httpcomponents-client-4.2.5-bin.zip;
package org.apache.http.examples.test;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
//从国家统计局爬取山东省市区县乡镇
public class DailySign {public static final String URL_GET = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2014/";public static int count = 0;public static String pre="12";public static String file = pre+".html";public static String fileName = pre+".html";public static FileWriter writer = null;public static StringBuffer sb = new StringBuffer();public static Pattern p = Pattern.compile("<a href='([^>]*)'>([^<]*)</a>");public static void main(String[] args) throws Exception {writer = new FileWriter(fileName+".txt");get("",file); try {writer.write(sb.toString());if(writer!=null){writer.close();}} catch (IOException e) {e.printStackTrace();}}public static void get(String prefix, String req) throws ClientProtocolException, IOException, InterruptedException {count++;//休眠,防止大量请求被网站拒绝if(count % 200 == 0){Thread.sleep(1000);}DefaultHttpClient client = new DefaultHttpClient();HttpGet signGet = new HttpGet(URL_GET + prefix + req);// 执行签到请求HttpResponse signResponse = client.execute(signGet);// 处理响应showResult(signResponse);}/*** 读取相应内容并输出* @throws InterruptedException */public static void showResult(HttpResponse response) throws IOException, UnsupportedEncodingException, InterruptedException {int status = response.getStatusLine().getStatusCode();HttpEntity entity = response.getEntity();InputStream instream = null;if (entity != null) {instream = entity.getContent();BufferedReader reader = new BufferedReader(new InputStreamReader(instream,"GBK"));String line = null;while ((line = reader.readLine()) != null) {line = new String(line.getBytes(), "UTF-8");if (line.startsWith("<tr class='citytr'>") || line.startsWith("<tr class='countytr'>")|| line.startsWith("<tr class='towntr'>")) {Matcher m = p.matcher(line);while (m.find()) {String code = m.group(1);String name = m.group(2);if (name.startsWith(pre)) {System.out.print(name + "\t");sb.append(name + "\t");} else {System.out.print(code + "\t");sb.append(code + "\t");sb.append(name+"\r\n");System.out.println(name);String prefix = "";if (line.startsWith("<tr class='countytr'>")) {prefix = "/"+code.substring(3, 5);}//递归get(prefix, "/"+code);}}} }instream.close();EntityUtils.consume(entity);} }
}
从国家统计局爬取山东省市区县乡镇相关推荐
- Python入门(安装)——第一个爬虫程序(爬取山东各城市天气信息)
Python爬虫原来可以这么简单,前两天有个朋友让我帮她看一下爬取天气的一段程序有什么问题,这段程序是用Python写的,只是以前听说Python爬虫很厉害,但是不知道自己怎么会没有时间开始.刚好我也 ...
- 手把手教你使用Python+scrapy爬取山东各城市天气预报
1.在命令提示符环境使用pip install scrapy命令安装Python扩展库scrapy,详见Python使用Scrapy爬虫框架爬取天涯社区小说"大宗师"全文 2.使用 ...
- 网络爬虫爬取全国省市区(动态ip代理的获取,实现对ip限制的突破)
记得还是在学校的时候听说过网络爬虫的,最近闲的蛋疼,想到爬虫这个稀奇的玩意儿感觉挺好玩的,所以就动手做了个 在起初的爬取中用的httpClient进行爬取的,发现越用越麻烦,代码过于繁琐而且解析htm ...
- python爬取天气数据山东_Python的学习《山东省各城市天气爬取》
Python+scrapy爬取山东各城市天气预报 1.在命令提示符环境使用pip install scrapy命令安装Python扩展库scrapy,详见Python使用Scrapy爬虫框架爬取天涯社 ...
- Python使用多进程提高网络爬虫的爬取速度
多线程技术并不能充分利用硬件资源和大幅度提高系统吞吐量,类似需求应使用多进程编程技术满足. 以爬取中国工程院院士简介和照片为例,参考代码如下,请自行分析目标网页结构并与参考代码进行比对.另外需要注意, ...
- Python爬取网页中表格数据并导出为Excel文件
本文使用自己创建的网页进行模拟和演示,在爬取真实网页时,分析网页源代码然后修改代码中的正则表达式即可. 假设某网页源代码为: 在Hbuilder中单击菜单"运行",选择使用Goog ...
- Python使用标准库urllib模拟浏览器爬取网页内容
爬取网页内容的第一步是分析目标网站源代码结构,确定自己要爬取的内容在哪里,这要求对HTML代码有一定了解,对于某些网站内容的爬取还需要具有一定的Javascript基础.但是,如果目标网站设置了反爬机 ...
- Python 3.6模拟输入并爬取百度前10页密切相关链接
1.安装扩展库mechanicalsoup,这个库依赖requests.beautifulsoup4等模块,一般会自动安装,如果失败的话,可以先安装依赖的其他扩展库. 2.分析百度网页源代码,找到用来 ...
- 使用scrapy框架爬取中国各城市天气预报 实验
使用scrapy框架爬取山东各城市天气预报 实验 实验目的: 熟练安装 Python 扩展库 scrapy. 熟悉常见 HTML 标签的用法. 理解网页源代码结构. 理解 scrapy 框架工作原理. ...
- 爬取2017年底最新中国全国五级行政区划代码省市区县乡镇村MySQL数据库
刚开始学习爬虫,学了pyspider,就想练练手.想到不久前需要一些云南地区的行政数据,还是在网络百度半天才下载的.现在既然会爬虫了,那就自己动手,随时可以用相对新的数据了(因为统计局最新的才更新到2 ...
最新文章
- Python爬虫入门(8):Beautiful Soup的用法
- Android中使用Canvas和Paint绘制一个安卓机器人
- html5基础知识点文本标签
- 决策树数学原理(ID3,c4.5,cart算法)
- 浅谈基于Linux的Redis环境搭建
- 将单词的首字母改为大写
- 挂钩Windows API
- HTML5 学习笔记(三)——本地存储(LocalStorage、SessionStorage、Web SQL Database)
- JBoss安装与配置
- oracle 10修改游标,Oracle10.2并发条件下更新游标数据的研究
- 各种未授权访问漏洞的复现与利用
- 校招笔试、面试六十题
- 俄勒冈之旅_俄勒冈州立大学开源实验室主持160个项目
- [NOIP模拟测试34]反思+题解
- 3D游戏编程与设计-游戏分类与热点探索
- jquery 鼠标拖动排序Li或Table
- python 常见日期转换、excel时间转化、日期加N天、减N天等操作
- FPGA进阶(2):基于I2C协议的EEPROM驱动控制
- oceanus-58总体框架理解
- 网络招聘巨头亏损引模式之辩
热门文章
- 超声波皮肤注入器行业研究及十四五规划分析报告
- 直播声音代码html,如何实现在直播中播放音频文件
- PPT转图片/PDF-实用干货
- 计算机考研专业课数字,2020北京航空航天大学计算机考研初试专业课经验
- python如何开根号求过程_python开根号实例讲解
- 从视频中提取为ppt或图片
- 淘宝淘口令n年前算法
- 基于python的单词查询
- 微盾php脚本解密,微盾php解密(黑刀微盾解密专家)
- yum源提示出现Another app is currently holding the yum lock; waiting for it to exit...