项目需要,写了个简单的程序爬去山东省市区县乡镇区划信息。

依赖的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);}         }
}

从国家统计局爬取山东省市区县乡镇相关推荐

  1. Python入门(安装)——第一个爬虫程序(爬取山东各城市天气信息)

    Python爬虫原来可以这么简单,前两天有个朋友让我帮她看一下爬取天气的一段程序有什么问题,这段程序是用Python写的,只是以前听说Python爬虫很厉害,但是不知道自己怎么会没有时间开始.刚好我也 ...

  2. 手把手教你使用Python+scrapy爬取山东各城市天气预报

    1.在命令提示符环境使用pip install scrapy命令安装Python扩展库scrapy,详见Python使用Scrapy爬虫框架爬取天涯社区小说"大宗师"全文 2.使用 ...

  3. 网络爬虫爬取全国省市区(动态ip代理的获取,实现对ip限制的突破)

    记得还是在学校的时候听说过网络爬虫的,最近闲的蛋疼,想到爬虫这个稀奇的玩意儿感觉挺好玩的,所以就动手做了个 在起初的爬取中用的httpClient进行爬取的,发现越用越麻烦,代码过于繁琐而且解析htm ...

  4. python爬取天气数据山东_Python的学习《山东省各城市天气爬取》

    Python+scrapy爬取山东各城市天气预报 1.在命令提示符环境使用pip install scrapy命令安装Python扩展库scrapy,详见Python使用Scrapy爬虫框架爬取天涯社 ...

  5. Python使用多进程提高网络爬虫的爬取速度

    多线程技术并不能充分利用硬件资源和大幅度提高系统吞吐量,类似需求应使用多进程编程技术满足. 以爬取中国工程院院士简介和照片为例,参考代码如下,请自行分析目标网页结构并与参考代码进行比对.另外需要注意, ...

  6. Python爬取网页中表格数据并导出为Excel文件

    本文使用自己创建的网页进行模拟和演示,在爬取真实网页时,分析网页源代码然后修改代码中的正则表达式即可. 假设某网页源代码为: 在Hbuilder中单击菜单"运行",选择使用Goog ...

  7. Python使用标准库urllib模拟浏览器爬取网页内容

    爬取网页内容的第一步是分析目标网站源代码结构,确定自己要爬取的内容在哪里,这要求对HTML代码有一定了解,对于某些网站内容的爬取还需要具有一定的Javascript基础.但是,如果目标网站设置了反爬机 ...

  8. Python 3.6模拟输入并爬取百度前10页密切相关链接

    1.安装扩展库mechanicalsoup,这个库依赖requests.beautifulsoup4等模块,一般会自动安装,如果失败的话,可以先安装依赖的其他扩展库. 2.分析百度网页源代码,找到用来 ...

  9. 使用scrapy框架爬取中国各城市天气预报 实验

    使用scrapy框架爬取山东各城市天气预报 实验 实验目的: 熟练安装 Python 扩展库 scrapy. 熟悉常见 HTML 标签的用法. 理解网页源代码结构. 理解 scrapy 框架工作原理. ...

  10. 爬取2017年底最新中国全国五级行政区划代码省市区县乡镇村MySQL数据库

    刚开始学习爬虫,学了pyspider,就想练练手.想到不久前需要一些云南地区的行政数据,还是在网络百度半天才下载的.现在既然会爬虫了,那就自己动手,随时可以用相对新的数据了(因为统计局最新的才更新到2 ...

最新文章

  1. Python爬虫入门(8):Beautiful Soup的用法
  2. Android中使用Canvas和Paint绘制一个安卓机器人
  3. html5基础知识点文本标签
  4. 决策树数学原理(ID3,c4.5,cart算法)
  5. 浅谈基于Linux的Redis环境搭建
  6. 将单词的首字母改为大写
  7. 挂钩Windows API
  8. HTML5 学习笔记(三)——本地存储(LocalStorage、SessionStorage、Web SQL Database)
  9. JBoss安装与配置
  10. oracle 10修改游标,Oracle10.2并发条件下更新游标数据的研究
  11. 各种未授权访问漏洞的复现与利用
  12. 校招笔试、面试六十题
  13. 俄勒冈之旅_俄勒冈州立大学开源实验室主持160个项目
  14. [NOIP模拟测试34]反思+题解
  15. 3D游戏编程与设计-游戏分类与热点探索
  16. jquery 鼠标拖动排序Li或Table
  17. python 常见日期转换、excel时间转化、日期加N天、减N天等操作
  18. FPGA进阶(2):基于I2C协议的EEPROM驱动控制
  19. oceanus-58总体框架理解
  20. 网络招聘巨头亏损引模式之辩

热门文章

  1. 超声波皮肤注入器行业研究及十四五规划分析报告
  2. 直播声音代码html,如何实现在直播中播放音频文件
  3. PPT转图片/PDF-实用干货
  4. 计算机考研专业课数字,2020北京航空航天大学计算机考研初试专业课经验
  5. python如何开根号求过程_python开根号实例讲解
  6. 从视频中提取为ppt或图片
  7. 淘宝淘口令n年前算法
  8. 基于python的单词查询
  9. 微盾php脚本解密,微盾php解密(黑刀微盾解密专家)
  10. yum源提示出现Another app is currently holding the yum lock; waiting for it to exit...