网络爬虫爬取邮箱,并将其存入xml中作为数据库

package com.bjsxt.ly;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class HelloSpider {
public static void main(String[] args) throws Exception {
//获取路径
String path = System.getProperty("user.dir") + File.separator + "src" + File.separator + "postcode.xml";
//邮政编码
String postcode = "100088";
//抓取网络信息
CharSequence charSequence = webSpider("http://tool.cncn.com/youbian/" + postcode);
//将抓取的信息通过正则表达式匹配,获取需要的内容
List<String> list = regexpPostcode("([\\u4e00-\\u9fa5\\w\\(\\)58-]+)(?=</li>)", 0, charSequence);
//将爬取的数据存放至XML
createXml(postcode, list, path);
}

/**
* 创建XML文档
* @param postcode
* @param list
* @param path
* @throws IOException
* @throws FileNotFoundException
* @throws UnsupportedEncodingException
*/
private static void createXml(String postcode, List<String> list, String path) throws UnsupportedEncodingException, FileNotFoundException, IOException {
//创建根节点
Element rootElement = DocumentHelper.createElement("postcodes");
//开始创建子节点
Element postcodeElement = DocumentHelper.createElement("postcode");
postcodeElement.addAttribute("code", postcode);
//遍历创建地址
for (String address : list) {
//创建节点
Element addressElement = DocumentHelper.createElement("address");
addressElement.setText(address);
//添加节点
postcodeElement.add(addressElement);
}
//拼接到根节点
rootElement.add(postcodeElement);
//开始创建文档对象模型
Document document = DocumentHelper.createDocument(rootElement);
//开始输出
new XMLWriter(new FileOutputStream(path), OutputFormat.createPrettyPrint()).write(document);
}

/**
* 正则表达式获取邮编
* @param regex
* @param flags
* @param charSequence
* @return
*/
private static List<String> regexpPostcode(String regex, int flags, CharSequence charSequence) {
//声明一个容器存放邮编地址
List<String> list = new ArrayList<>();
//获取模板
Pattern pattern = Pattern.compile(regex, flags);
//获取匹配器
Matcher matcher = pattern.matcher(charSequence);
//开始读取
while (matcher.find()) {
list.add(matcher.group());
}
//返回结果
return list;
}

/**
* 网络爬虫
* @param spec
* @return
* @throws IOException
*/
private static CharSequence webSpider(String spec) throws IOException {
//获取URL地址
URL url = new URL(spec);
//获取连接
URLConnection connection = url.openConnection();
//伪装成浏览器
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0");
//获取输入流
InputStream inputStream = connection.getInputStream();
//开始转换
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "GBK"));
//开始获取字符串
StringBuffer buffer = new StringBuffer();
String line = "";
//开始遍历读取
while ((line = reader.readLine()) != null) {
//开始拼接字符串
buffer.append(line);
}
//返回爬取的内容
return buffer;
}
}

时间: 2024-10-13 16:05:09

网络爬虫爬取邮箱,并将其存入xml中作为数据库的相关文章

如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入. 一.代码实现 1.修改Scrapy项目中的items.py文件.我们需要获取的数据是朋友圈和发布日期,因此在这里定义好日期和动态两个属性,如下图所示. 2.修改实现爬虫逻辑的主文件moment.py,首先要导入模块,尤其是要主要将items.py中的WeixinMomentItem类导入进来,这点要特别小心别被遗漏了.之后修改start_requests方

如何用Python网络爬虫爬取网易云音乐歌词

前几天小编给大家分享了数据可视化分析,在文尾提及了网易云音乐歌词爬取,今天小编给大家分享网易云音乐歌词爬取方法. 本文的总体思路如下: 找到正确的URL,获取源码: 利用bs4解析源码,获取歌曲名和歌曲ID: 调用网易云歌曲API,获取歌词: 将歌词写入文件,并存入本地. 本文的目的是获取网易云音乐的歌词,并将歌词存入到本地文件.整体的效果图如下所示: 基于Python网易云音乐歌词爬取 赵雷的歌曲 本文以民谣歌神赵雷为数据采集对象,专门采集他的歌曲歌词,其他歌手的歌词采集方式可以类推,下图展示

python爬虫爬取网上药品信息并且存入数据库

我最近在学习python爬虫,然后正好碰上数据库课设,我就选了一个连锁药店的,所以就把网上的药品信息爬取了下来. 1,首先分析网页 2,我想要的是评论数比较多的,毕竟好东西大概是买的人多才好.然后你会发现它的url地址是有规律的里面的j1是指第一页,j2第二页,这样构建一个url_list. 1 url_list = 'https://www.111.com.cn/categories/953710-a0-b0-c31-d0-e0-f0-g0-h0-i0-j%s.html'#然后循环获取响应 2

java网络爬虫爬取百度新闻

采用commons-httpclient commons-httpclient是一个遗留版本,现在官方已经不推荐使用了. lucene采用4.3版本 所需jar包 package com.lulei.util; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream;

Python网络爬虫爬取贴吧话题热议榜单(可自定义条数)

以上为页面结构 import pandas as pd import requests as rq from bs4 import BeautifulSoup url="http://tieba.baidu.com/hottopic/browse/topicList?res_type=1" def res_caputure(): try: res = rq.get(url,timeout=30) res.raise_for_status() res.encoding = res.app

用Scrapy爬虫爬取豆瓣电影排行榜数据,存储到Mongodb数据库

爬虫第一步:新建项目 选择合适的位置,执行命令:scrapy startproje xxxx(我的项目名:douban) 爬虫第二步:明确目标 豆瓣电影排行url:https://movie.douban.com/top250?start=0, 分析url后发现srart=后面的数字,以25的步长递增,最大为225,所以可以利用这个条件来发Request请求 本文只取了三个字段,电影名.评分和介绍,当然你想去更多信息也是可以的 item["name"]:电影名 item["r

如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例

前几天给大家分享了利用Python网络爬虫抓取微信朋友圈的动态(上)和利用Python网络爬虫爬取微信朋友圈动态--附代码(下),并且对抓取到的数据进行了Python词云和wordart可视化,感兴趣的伙伴可以戳这篇文章:利用Python词云和wordart可视化工具对朋友圈数据进行可视化. 今天我们继续focus on微信,不过这次给大家带来的是利用Python网络爬虫抓取微信好友总数量和微信好友男女性别的分布情况.代码实现蛮简单的,具体的教程如下. 相信大家都知道,直接通过网页抓取微信的数据

用Python爬虫爬取广州大学教务系统的成绩(内网访问)

用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code] 在{}之前的部分就是"选择器"."选择器"指明了{}中的"样式"的作用对象,也就是"样式"作用于网页中的哪些元素.可参考:http://www.w3school.com.cn/cssref/css_selectors.asph

如何利用Python网络爬虫抓取微信朋友圈的动态(上)

今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门.不过不要慌,小编在网上找到了第三方工具,它可以将朋友圈进行导出,之后便可以像我们正常爬虫网页一样进行抓取信息了. [出书啦]就提供了这样一种服务,支持朋友圈导出,并排版生成微信书.本文的主要参考资料来源于这篇博文:https://www.cnblogs.com/sheng-jie/p/7776495.html