网络爬虫之java基础(Ⅰ)
来源:互联网 发布:测试手机信号强度软件 编辑:程序博客网 时间:2024/05/17 02:07
目录
- 1Java中maven的使用
- 2log4j
- log4j的介绍
- log4j提供的几种方法
- 使用步骤
- 3输入流与输出流
- 数据的读写程序以及map的使用
这张图为我给自己研究所人讲网络爬虫的一个流程,本人也将按照这个流程来讲网络爬虫,如果你的基础较好,可以直接跳过相关流程。
1、Java中maven的使用
使用maven能很轻松的从网络中下载所需的插件
及依赖(下载程序所依赖的JAR包),存储在某一位置中,在程序编译时自动去寻找jar包。初次使用maven时,可能会很慢,会遇到很多问题(国外的源,下载jar包很慢)可以配置一些国内的源,如csdn的。
maven的jar包搜索地址地址:http://mvnrepository.com/,可以通过这个地址搜索自己需要的相关jar包。
使用maven最大的方面,在ecliplse中建工程的时候,我们选择maven工程。如下图所示,maven工程上面会有一个M的标致,同时生成一个pom.xml文件,通过在pom.xml中加入以下类型的文件,便可把jar包引入到Maven Dependencies中。
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version> 1.8.2</version> </dependency>
我们可以在http://mvnrepository.com/网站中搜索自己需要的相关jar包后,将其复制到pom.xml中即可。如下图所示
2、log4j
log4j的介绍
log4j是Apache下的一个开源项目,用来控制日志信息,方便的日志记录。之所以要记录日志,可以详细的记录程序发生了什么,在哪里发生的,有没有错误等。在使用log4j之前需要使用maven引入log4j的jar包。
其中,日志的输出级别(%p ):DEBUG,INFO,WARN,ERROR,FATAL(每个严重的错误事件将会导致应用程序的退出)
log4j提供的几种方法
(1)Appender方法:日志输出目的地
org.apache.log4j.ConsoleAppender(控制台),org.apache.log4j.FileAppender(文件),org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)。
(2)Layout方法:日志输出格式
org.apache.log4j.HTMLLayout(以HTML表格形式布局),org.apache.log4j.PatternLayout(可以灵活地指定布局模式),org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)。
使用步骤
(1)导入log4j-1.2.8.jar包(我们使用maven)。
(2)在根目录src下建立并配置log4j.properties,如下图所示为我的配置。
(3)使用(演示),如下图所示。
logger.debug(“This is debug.”);
logger.info(“This is an info.”);
logger.warn(“This is a warning.”);
logger.error(“This is an error.”);
logger.fatal(“This is a fatal error.”);
3、输入流与输出流
这里也不做很多介绍,简单一点,输入流、输出流就是文件的读与写,当然这样理解比较狭隘。详细的,大家可以看http://blog.csdn.net/liuxiaogangqq/article/details/25892667。这篇博客,总结的很全面,值得学习。
(1)读取文件(输入流read())、写文件(输出流write())
(2)文件字节流:FileInputStream()、 FileOutputStream()
(3)文件字符流: FileReader()、FileWriter ()
(4)缓冲流(读写能力强,最常用):BufferedReader()、BufferedWriter()
注意:缓冲流的源必须是字节流或者字符流
案列:
数据的读写程序以及map的使用
package FileUtil;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;public class FileTest { static final Log logger = LogFactory.getLog(FileTest.class); public static void main(String[] args) throws IOException { /****** 读入的数据存入list<>中******/ List<String> Data=new ArrayList<String>(); /****** 创建所要读的文本******/ File file = new File("E:\\钱洋个人\\网络爬虫培训\\attentionword.txt"); /****** FileReader顺序读取文件*****/ FileReader fileReader = new FileReader(file); /****** 根据FileReader创建的实例******/ BufferedReader bufferedReader =new BufferedReader(fileReader); String s=null; while ((s=bufferedReader.readLine())!=null) { Data.add(s); logger.info(s); } bufferedReader.close(); fileReader.close(); /****** 文件读取第二种方式 ******/ BufferedReader reader = new BufferedReader( new InputStreamReader( new FileInputStream( new File( "E:\\钱洋个人\\网络爬虫培训\\b.txt")),"utf-8")); String s1=null; while ((s1=reader.readLine())!=null) { Data.add(s1); logger.info(s1); } reader.close(); /****** 文件写入第一种方式 ******/ /*File file1=new File("D:\\钱洋个人\\网络爬虫培训\\b.txt","utf-8"); FileOutputStream fileOutputStream=new FileOutputStream(file1); OutputStreamWriter outputStreamWriter=new OutputStreamWriter(fileOutputStream); BufferedWriter bufferedWriter1=new BufferedWriter(outputStreamWriter);*/ /****** 文件写入快捷方式******/ BufferedWriter writer = new BufferedWriter( new OutputStreamWriter( new FileOutputStream( new File("D:\\钱洋个人\\网络爬虫培训\\d.txt")),"utf-8")); /****** map的使用 ******/ Map<Integer,String> map=new HashMap<Integer,String>(); /****** map添加数据 ******/ for (String data : Data){ map.put(Integer.parseInt(data.split("\\s")[0]), data.substring(1,data.length())); } /****** map遍历数据 ******/ for( Integer key : map.keySet() ){ System.out.println("key:"+key+"\tvalue:"+map.get(key)); writer.append("key:"+key+"\tvalue:"+map.get(key)+"\r\n"); } writer.close(); }}
- 网络爬虫之java基础(Ⅰ)
- 网络爬虫之java基础(Ⅰ) 标签: java网络爬虫
- 网络爬虫之Java基础篇(Ⅱ)
- 网络爬虫之java基础篇QueryRunner(Ⅲ)
- 网络爬虫之Java基础篇(Ⅱ)
- 网络爬虫之java基础篇QueryRunner(Ⅲ)
- Java网络爬虫基础
- Java网络爬虫--HTML DOM(HTML 基础)
- 网络爬虫基础(一)
- 网络爬虫基础(二)
- Python--网络爬虫之基础篇
- 零基础写java网络爬虫
- 零基础写java网络爬虫-百度
- 零基础写java网络爬虫
- 网络爬虫之html获取和解析(Java)
- 黑马程序员——JAVA基础之正则表达式,网络爬虫
- Webmagic网络爬虫(JAVA)
- IT忍者神龟之Java网络爬虫回顾
- EM算法推导
- ps-各工具的使用
- android app最顶层弹出透明背景的弹框
- 【软工视频】软件分析
- POJ 2109 Power of Cryptography
- 网络爬虫之java基础(Ⅰ)
- 【HDU5828】Rikka with Sequence(线段树)
- 内存对齐的一道面试题目
- 爬取msdn.itellyou.cn网站
- Postgrel 常见操作(1)
- 关联容器
- UVA 1658 Admiral [费用流] [拆点]
- 极角排序
- 【POJ2463】Bungee Jumping