昨天用JAVA爬了欣欣旅游的邮编信息,生成XML。中间涉及到了Jdom知识,记录下爬取过程。

效果图如下所示:

445003

新建街二巷,巴公路一巷,民族西路二巷,新建街一巷

445014

龙凤镇大市场,龙凤镇龙凤村,龙凤镇双堰村,龙凤镇向家村

445016

白杨坪乡鲁竹坝村,白杨乡白杨街,白杨乡朝阳坡村,白杨乡董家店村

.............................

代码如下:

import org.jdom2.Document;

import org.jdom2.Element;

import org.jdom2.input.SAXBuilder;

import org.jdom2.output.Format;

import org.jdom2.output.XMLOutputter;

import java.io.*;

import java.net.URL;

import java.net.URLConnection;

import java.util.ArrayList;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class UrlSpider {

//爬邮编、地址

static String regexNo = "([\\d]+)";

static String regexAddress = "

([^>]+)[^

";

static Pattern patternNo = Pattern.compile(regexNo);

static Pattern patternAddr = Pattern.compile(regexAddress);

static StringBuffer sb = new StringBuffer("");

static ArrayList addrList = new ArrayList();

static ArrayList noList = new ArrayList();

public static void main(String[] args) throws Exception {

BufferedReader bs = getMsg();

String line = null;

while ((line = bs.readLine()) != null) {

sb.append(line);

}

//创建解析对象

String filepath = System.getProperty("user.dir")+ File.separator+"src"+File.separator+"post.xml";

SAXBuilder saxBuilder = new SAXBuilder();

InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("post.xml");

//用解析对象解析输入流生成文档对象

Document document = saxBuilder.build(inputStream);

Element rootElement = document.getRootElement();

rootElement.setName("postcodes");

rootElement.setAttribute("name","恩施市邮编信息");

Matcher matchernNo = patternNo.matcher(sb);

Matcher matchernAddr = patternAddr.matcher(sb);

while (matchernNo.find()||matchernAddr.find()) {

Element noaddress = new Element("no-address");

Element no= new Element("no");

if (matchernNo.find()) {

String group = matchernNo.group(1);

if (group != null) {

// System.out.println("邮编号码:" + group);

noaddress.addContent(no);

no.setText(group);

}

}

if (matchernAddr.find()) {

String group1 = matchernAddr.group(1);

// System.out.println("地址:" + group1);

Element address = new Element("address");

rootElement.addContent( noaddress);

noaddress.addContent(address);

address.setText(group1);

}

}

//将documnet写入到硬盘

Format format = Format.getPrettyFormat();//定义格式

format.setEncoding("utf-8");

XMLOutputter xmlOutputter = new XMLOutputter(format);

try {

xmlOutputter.output(document,new FileOutputStream(filepath));

} catch (IOException e) {

e.printStackTrace();

}

}

public static BufferedReader getMsg() throws IOException {

URL url = new URL("https://tool.cncn.com/youbian/enshi-enshi");

URLConnection connection = url.openConnection();

//添加User-Agent

connection.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36");

return new BufferedReader(new InputStreamReader(connection.getInputStream(), "GBK"));

}

}

java 获取邮编_JAVA爬取邮编信息,生成XML相关推荐

  1. java的段子_java爬取捧腹网段子(多线程版)

    上一篇文章讲述了如何使用Java爬取内容并写入文件,但是速度堪忧,今天将代码搞成了多线程版本, 具体方式如下: 新建一个splider类,继承callable接口,用于存放我们需要多线程执行的逻辑: ...

  2. java图片小猫_java爬取猫咪上的图片

    1 package文件操作;2 3 importjava.io.ByteArrayOutputStream;4 importjava.io.File;5 importjava.io.FileOutpu ...

  3. 如何抓取微博https Java,java如何爬取微博信息,或者通过接口获取微博信息

    第一步,访问目标网页第二步,根据网页所需内容的特定元素使用jsoup的选择器选取(使用正则表达式效率更高),在这个例子中,目标网页是一个论坛,而我们所需要做的是爬取论坛首页所有帖子的标题名与链接地址. ...

  4. JAVA使用HttpClient模拟登录正方教务系统,爬取学籍信息和课程表成绩等,超详细登录分析和代码注解

    目录 前言 分析 代码实现 第一次GET POST登录 第二次Get 第三次GET 第四次GET 第五次GET 测试 完整代码 前言 最近在做一个APP,需要获取我们学校--武汉纺织大学皇家停水断电断 ...

  5. Java 爬虫:是时候 Get 新技能了,使用 Java 爬取网页信息

    如果你想利用自己的技术做出一点有意思的产品来,那么爬虫.算法和 AI 等技术可能是一个不错的突破口.今天,我们就来介绍下使用 Java 爬取页面信息的几种思路. 说起爬虫,自从 Python 兴起之后 ...

  6. 是时候 Get 新技能了:使用 Java 爬取网页信息

    如果你想利用自己的技术做出一点有意思的产品来,那么爬虫.算法和 AI 等技术可能是一个不错的突破口.今天,我们就来介绍下使用 Java 爬取页面信息的几种思路. 说起爬虫,自从 Python 兴起之后 ...

  7. java爬取彩票数据_爬取彩票信息(有空试下)

    暂且不说,彩票预测是否靠谱?彩票预测也分人而异,江湖上骗术很多,有些甚至会误以为彩票预测的准确度可以很高,这些操盘手法,让不知原理的彩民心甘情愿地掏钱买料. 在彩票预测上,也有正儿八经去研究" ...

  8. 大众点评 爬虫 java_用JAVA制作一个爬取商品信息的爬虫(爬取大众点评)

    很多企业要求利用爬虫去爬取商品信息,一般的开发模型如下: for i=1;i<=最大页号;i++ 列表页面url=商品列表页面url+?page=i(页号) 列表页面=爬取(列表页面url) 商 ...

  9. Java爬取行政区域信息到数据库

    maven依赖: <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --><dependency><grou ...

最新文章

  1. Memcached内存池分析
  2. Webpack原理与实践
  3. 介绍一下linux系统的join 命令
  4. NUTCH的安装与测试
  5. spark-sql执行时报错:
  6. KILE退出调试模式时显示Encuntered an improper argument
  7. python查找序列元素的最大值和最小值_pthon基础知识(索引、切片、序列相加、乘法、检查元素是否是序列成员、计算序列长度、最大最小值)...
  8. android 输入法sd卡,如何android扫描SD卡列出大文件
  9. 怎么查计算机二级证书到没到学校,今年3月份考的全国计算机二级,结果忘记去领证书了,我是在城建学院考的,还会给我留着吗?这证书能补办吗...
  10. html input url,HTML5表单之Input 部类-url
  11. python jupyter notebook下载_Jupyter notebook 安装
  12. Windows更改系统字体
  13. 【时间序列】时间序列预测基本方法:移动平均(SMA,EMA,WMA)
  14. Go第八篇之包的使用
  15. Dart 实现字符串 进行 gbk编码的 urlencode
  16. Fastadmin 自带的导入Excel功能
  17. 异地多活 以阿里为例
  18. corrupted double-linked list: 0x086a6c50(内存问题)
  19. 【资源总结】前端资源收集
  20. 超酷的摄像头魔法特效软件:ArcSoft Magic Visual Effects

热门文章

  1. java实现二叉堆,数据结构基础篇-二叉堆
  2. OpenCV Tutorial: 縮寫(uchar、ushort、Vec)
  3. 学习掘金React进阶实践指南笔记(三)玄学state
  4. 计算机故障报警声2声,电脑发出一长两短报警声的原因分析及解决办法
  5. 【一】Java语言基础思维导图
  6. 使用origin画图,求得曲线各点的斜率,如何在book的sheet表中增加x和y的列数
  7. LTE 测试文档(翻译)
  8. 补齐 windows 运行库和运行环境(VC++、DirectX、.Net)
  9. 数据仓库为何分层,各层作用?
  10. 金融IC卡 ARQC和ARPC计算方法和实例