网页爬虫
2013-04-21 17:16
120 查看
/*
网页爬虫
如果要在程序中使用正则表达式,则必须依靠Pettern类和Matcher类,
这两个类都在java.util.regex保重定义。
Pettern类的主要作用是进行正则规范的编写,而Matcher类主要执行规范,校验一个字符串是否符合规范
Pettern类中的正则规范
"\w"表示字母、数字、下划线
程序中的"\"字符需要转义,所以"\\"实际上是表示的"\"
"+"表示一位或多位
Pettern类中的常用方法
public static Pattern compile(String regex) //指定正则表达式规则
public Matcher matcher(CharSequence input) //返回Matcher类实例
public String[] split(CharSequence input) //字符串拆分
Matcher类常用的方法
public boolean matches() //执行验证
public String replace(String replacement) //字符串替换
BufferedReader类
BufferedReader类用于从缓冲区读取内容,所有输入的字节数据都将放在缓冲区中
BufferedReader类中的常用方法
public BufferedReader(Reader in) //接收一个Reader类的实例(构造函数)
public String readLine() throws IOException //一次性从缓冲区中将内容全部读取出来
说明:
BufferedReader中定义的构造函数方法只能接收字符输入流的实例
所以有时用字符输入流和字节输入流的转换类InputStreamReader(Reader的子类)
将字节输入流转换为字符输入流
字符流操作时使用了缓冲区,而字节流操作时不使用缓冲区,在开发中字节流使用较为广泛
Reader本身是抽象类,如果要从文件中读取内容,则可以直接使用子类FileReader子类。
FileReader的构造方法如下:
public FileReader(File file) throws FileNoFoundException
说明:
FileReader不直接是Reader的子类而是InputStreamReader的子类
*/
网页爬虫
如果要在程序中使用正则表达式,则必须依靠Pettern类和Matcher类,
这两个类都在java.util.regex保重定义。
Pettern类的主要作用是进行正则规范的编写,而Matcher类主要执行规范,校验一个字符串是否符合规范
Pettern类中的正则规范
"\w"表示字母、数字、下划线
程序中的"\"字符需要转义,所以"\\"实际上是表示的"\"
"+"表示一位或多位
Pettern类中的常用方法
public static Pattern compile(String regex) //指定正则表达式规则
public Matcher matcher(CharSequence input) //返回Matcher类实例
public String[] split(CharSequence input) //字符串拆分
Matcher类常用的方法
public boolean matches() //执行验证
public String replace(String replacement) //字符串替换
BufferedReader类
BufferedReader类用于从缓冲区读取内容,所有输入的字节数据都将放在缓冲区中
BufferedReader类中的常用方法
public BufferedReader(Reader in) //接收一个Reader类的实例(构造函数)
public String readLine() throws IOException //一次性从缓冲区中将内容全部读取出来
说明:
BufferedReader中定义的构造函数方法只能接收字符输入流的实例
所以有时用字符输入流和字节输入流的转换类InputStreamReader(Reader的子类)
将字节输入流转换为字符输入流
字符流操作时使用了缓冲区,而字节流操作时不使用缓冲区,在开发中字节流使用较为广泛
Reader本身是抽象类,如果要从文件中读取内容,则可以直接使用子类FileReader子类。
FileReader的构造方法如下:
public FileReader(File file) throws FileNoFoundException
说明:
FileReader不直接是Reader的子类而是InputStreamReader的子类
*/
import java.io.*; import java.util.regex.*; import java.text.DateFormat; import java.util.*; import java.net.*; public class SpiderDemo { public static File file ; public static void main(String args[]) throws Exception { long startTime = System.currentTimeMillis(); //起始时间 creatFile(); //getMailFromTxt(); getMailFromURl(); long endTime = System.currentTimeMillis(); //结束时间 System.out.println("总共耗时:" + (endTime-startTime) + "毫秒......"); } //创建TXT文件用于保存邮箱地址 public static void creatFile() { file = new File("G:\\My Java\\Regex\\spiderFile.txt"); //创建对象并给出路径 if(!file.exists()) //判断文件是否存在 { try { file.createNewFile(); //按照指定路径创建文件 System.out.println("文件创建成功......"); } catch(IOException e) { e.printStackTrace(); } } else System.out.println("文件已存在......"); } //从TXT文件中获取邮箱地址 public static void getMailFromTxt() throws Exception { BufferedReader bufr = new BufferedReader(new FileReader("mail.txt")); String line = null; String mailreg = "\\w+@\\w+(\\.\\w+)+"; //定义规则 Pattern p = Pattern.compile(mailreg); //指定正则表达式规则 while((line = bufr.readLine())!=null) //从缓冲区中将内容全部读取出来 { Matcher m =p.matcher(line); while(m.find()) { System.out.println(m.group()); } } } //从网页中获取邮箱地址 public static void getMailFromURl() throws Exception { long n = 1849962706; Writer out = null; out = new FileWriter(file,true); for(;n<2051291221;n++) { URL url = new URL("http://tieba.baidu.com/p/" + n); URLConnection conn = url.openConnection(); BufferedReader bufIn = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; String mailreg = "\\w+@\\w+(\\.\\w+)+"; Pattern p = Pattern.compile(mailreg); int i = 0; while((line = bufIn.readLine())!=null) { Matcher m =p.matcher(line); while(m.find()) { System.out.println(m.group()); out.write("NO." + (++i)+ ": " + m.group() + " "); } } System.out.println("共获取到 " + i + "个邮箱地址......"); DateFormat df = DateFormat.getDateTimeInstance(); //格式化时间 System.out.println("当前时间:" + df.format(new Date()) + "......"); out.write("共获取到 " + i + "个邮箱地址......" + df.format(new Date())); } out.close(); } } }
相关文章推荐
- (104)网页爬虫
- Python3——简单获取网页文字的爬虫
- 网页数据采集: 制作京东关键词网页爬虫
- PHP爬虫抓取网页内容 (simple_html_dom.php)
- 网络爬虫初步:从访问网页到数据解析
- 爬虫的网页
- 非常全面到位的介绍与源代码地址 :Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱
- 网页爬虫之新浪微博网页数据的采集规则配置方法
- Python爬虫(七)学习提取网页中所有链接
- python网页爬虫之列车时刻表的抓取-完整的python脚本
- Java爬虫抓取网页
- 【Java Utility】Jsoup网页爬虫工具简介Java HTML PARSER【一】
- 【Java Utility】Jsoup网页爬虫工具-使用选择器查找元素【八】
- 网页爬虫--scrapy进阶
- python3爬虫2--网页源代码及图片提取
- node.js基础模块http、网页分析工具cherrio实现爬虫
- python网络爬虫抓取动态网页并将数据存入数据库MySQL
- Python爬虫实例(3)-用BeautifulSoup爬取多个可翻页网页上的多张照片
- 利用java的url实现小型的网页爬虫
- XPath Helper:chrome爬虫网页解析工具 Chrome插件