java 获取邮编_JAVA爬取邮编信息,生成XML
昨天用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相关推荐
- java的段子_java爬取捧腹网段子(多线程版)
上一篇文章讲述了如何使用Java爬取内容并写入文件,但是速度堪忧,今天将代码搞成了多线程版本, 具体方式如下: 新建一个splider类,继承callable接口,用于存放我们需要多线程执行的逻辑: ...
- java图片小猫_java爬取猫咪上的图片
1 package文件操作;2 3 importjava.io.ByteArrayOutputStream;4 importjava.io.File;5 importjava.io.FileOutpu ...
- 如何抓取微博https Java,java如何爬取微博信息,或者通过接口获取微博信息
第一步,访问目标网页第二步,根据网页所需内容的特定元素使用jsoup的选择器选取(使用正则表达式效率更高),在这个例子中,目标网页是一个论坛,而我们所需要做的是爬取论坛首页所有帖子的标题名与链接地址. ...
- JAVA使用HttpClient模拟登录正方教务系统,爬取学籍信息和课程表成绩等,超详细登录分析和代码注解
目录 前言 分析 代码实现 第一次GET POST登录 第二次Get 第三次GET 第四次GET 第五次GET 测试 完整代码 前言 最近在做一个APP,需要获取我们学校--武汉纺织大学皇家停水断电断 ...
- Java 爬虫:是时候 Get 新技能了,使用 Java 爬取网页信息
如果你想利用自己的技术做出一点有意思的产品来,那么爬虫.算法和 AI 等技术可能是一个不错的突破口.今天,我们就来介绍下使用 Java 爬取页面信息的几种思路. 说起爬虫,自从 Python 兴起之后 ...
- 是时候 Get 新技能了:使用 Java 爬取网页信息
如果你想利用自己的技术做出一点有意思的产品来,那么爬虫.算法和 AI 等技术可能是一个不错的突破口.今天,我们就来介绍下使用 Java 爬取页面信息的几种思路. 说起爬虫,自从 Python 兴起之后 ...
- java爬取彩票数据_爬取彩票信息(有空试下)
暂且不说,彩票预测是否靠谱?彩票预测也分人而异,江湖上骗术很多,有些甚至会误以为彩票预测的准确度可以很高,这些操盘手法,让不知原理的彩民心甘情愿地掏钱买料. 在彩票预测上,也有正儿八经去研究" ...
- 大众点评 爬虫 java_用JAVA制作一个爬取商品信息的爬虫(爬取大众点评)
很多企业要求利用爬虫去爬取商品信息,一般的开发模型如下: for i=1;i<=最大页号;i++ 列表页面url=商品列表页面url+?page=i(页号) 列表页面=爬取(列表页面url) 商 ...
- Java爬取行政区域信息到数据库
maven依赖: <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --><dependency><grou ...
最新文章
- Memcached内存池分析
- Webpack原理与实践
- 介绍一下linux系统的join 命令
- NUTCH的安装与测试
- spark-sql执行时报错:
- KILE退出调试模式时显示Encuntered an improper argument
- python查找序列元素的最大值和最小值_pthon基础知识(索引、切片、序列相加、乘法、检查元素是否是序列成员、计算序列长度、最大最小值)...
- android 输入法sd卡,如何android扫描SD卡列出大文件
- 怎么查计算机二级证书到没到学校,今年3月份考的全国计算机二级,结果忘记去领证书了,我是在城建学院考的,还会给我留着吗?这证书能补办吗...
- html input url,HTML5表单之Input 部类-url
- python jupyter notebook下载_Jupyter notebook 安装
- Windows更改系统字体
- 【时间序列】时间序列预测基本方法:移动平均(SMA,EMA,WMA)
- Go第八篇之包的使用
- Dart 实现字符串 进行 gbk编码的 urlencode
- Fastadmin 自带的导入Excel功能
- 异地多活 以阿里为例
- corrupted double-linked list: 0x086a6c50(内存问题)
- 【资源总结】前端资源收集
- 超酷的摄像头魔法特效软件:ArcSoft Magic Visual Effects
热门文章
- java实现二叉堆,数据结构基础篇-二叉堆
- OpenCV Tutorial: 縮寫(uchar、ushort、Vec)
- 学习掘金React进阶实践指南笔记(三)玄学state
- 计算机故障报警声2声,电脑发出一长两短报警声的原因分析及解决办法
- 【一】Java语言基础思维导图
- 使用origin画图,求得曲线各点的斜率,如何在book的sheet表中增加x和y的列数
- LTE 测试文档(翻译)
- 补齐 windows 运行库和运行环境(VC++、DirectX、.Net)
- 数据仓库为何分层,各层作用?
- 金融IC卡 ARQC和ARPC计算方法和实例