写在开始前,既然是大型教程,那就从最初始的环境变量开始搭建说起。
电脑环境:我的电脑是macbook pro,因此系统环境变量配置是和Windows不一样的,如果你的电脑是Windows系统,可以百度下相关环境变量配置。
爬虫框架:使用的是webmagic,这是国内不错的爬虫框架,借鉴于python的scrapy框架。
首先提一句,从2019年1月开始更新的版本,jdk8 u201开始对公司用户来说是收费的!!!因此如果你的公司没有向oracle申请购买的话,一定要使用jdk8 u191及其以下的jdk版本,不然oracle是可以告你的公司的哦。当然,如果你是个人学习用的话,那就随便了。
首先我列一下jdk8 u191的下载地址,记得保存好。地址:
https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html
Java的下载安装配置就不说了,实在太基础了,安装成功后.
MacBook-Pro:~ duke$ java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
官方下载地址:https://maven.apache.org/download.cgi
你可以把maven解压至任何地方,这里我把maven放在了/Users/duke/Documents/Software
这个文件夹里,解压命令不需多言。
我只简单的描述一下maven,Java程序运行需要各种各样的jar包,你可能要费心费力的去处理jar包和环境配置问题,但是使用maven就可以解决这个问题。如果你使用过git,就知道代码首先是要commit本地仓,然后在push到git远程仓。maven是相同的道理,它会有个本地仓,如果java代码中使用了相关jar包,会首先在本地仓寻找,如果没找到,会向远程仓请求,下载到本地仓供使用。
① 打开终端 ,输入vim ~/.bash_profile
② 输入i进入编辑模式,然后输入 Maven 的环境变量
export M2_HOME="/Users/duke/Documents/Software/apache-maven-3.6.0"
export PATH="$M2_HOME/bin:$PATH"
③ 编辑完后,按 esc 退出编辑,并输入 :wq 保存并退出。
④ 输入 source ~/.bash_profile 使环境变量生效。
⑤ 输入 mvn -v 查看 Maven 否安装成功。
① 用IDEA或Eclipse打开/Users/duke/Documents/Software/apache-maven-3.6.0/conf/settings.xml
② 找到mirrors元素(150行左右), 在它里面添加子元素mirror
<mirror>
<id>nexus-aliyunid>
<mirrorOf>*mirrorOf>
<name>Nexus aliyunname>
<url>http://maven.aliyun.com/nexus/content/groups/publicurl>
mirror>
第一步:只是想使用maven来下载相关包,所以不用选中create from archetype,点击next,如下图:
第二步:GroupId(一般填反转后公司域名)和ArtifactId(项目名)还有Version,这三个属性目的是标识你的项目的唯一性,点击next,如下图:
第三步:以上配置按需修改,一般保持默认,很简单就是保存项目的路径,点击Finish,如下图:
第四步:在接下来的面板中选择本地的maven/Users/duke/Documents/Software/apache-maven-3.6.0
(如果是第一次创建项目,会有预创建过程,控制台会显示在从阿里云下载模版,去喝杯咖啡等待即可)
第五步:进入了首页,原始状态如下图:
第六步:添加坐标:
<properties>
<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
<maven.compiler.source>1.8maven.compiler.source>
<maven.compiler.target>1.8maven.compiler.target>
properties>
<dependencies>
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.17version>
dependency>
<dependency>
<groupId>us.codecraftgroupId>
<artifactId>webmagic-coreartifactId>
<version>0.7.3version>
dependency>
<dependency>
<groupId>us.codecraftgroupId>
<artifactId>webmagic-extensionartifactId>
<version>0.7.3version>
dependency>
<dependency>
<groupId>us.codecraftgroupId>
<artifactId>webmagic-extensionartifactId>
<version>0.7.3version>
<exclusions>
<exclusion>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-log4j12artifactId>
exclusion>
exclusions>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<version>3.8.0version>
<configuration>
<source>1.8source>
<target>1.8target>
configuration>
plugin>
plugins>
build>
然后点击右下角import changes,加载完成后,右下角import changes
消失,如下图:
第七步:配置log4j.properties
我按照我的习惯,新建一个config文件夹,将其标记为source root
配置log4j
# priority :debug
#you cannot specify every priority with different file for log4j
#log4j.rootLogger=debug,stdout,info,debug,warn,error
#按照你的需要将输出日志等级
log4j.rootLogger=warn,error
#console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= [%d{yyyy-MM-dd HH:mm:ss a}]:%p %l%m%n
#info log
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.info.File=./log/info.log
log4j.appender.info.Append=true
log4j.appender.info.Threshold=INFO
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n
#debug log
log4j.logger.debug=debug
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.debug.File=./log/debug.log
log4j.appender.debug.Append=true
log4j.appender.debug.Threshold=DEBUG
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n
#warn log
log4j.logger.warn=warn
log4j.appender.warn=org.apache.log4j.DailyRollingFileAppender
log4j.appender.warn.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.warn.File=./log/warn.log
log4j.appender.warn.Append=true
log4j.appender.warn.Threshold=WARN
log4j.appender.warn.layout=org.apache.log4j.PatternLayout
log4j.appender.warn.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n
#error
log4j.logger.error=error
log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.error.File = ./log/error.log
log4j.appender.error.Append = true
log4j.appender.error.Threshold = ERROR
log4j.appender.error.layout = org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ]%n%p:%m%n
新建log文件夹存放日志(这只是本地测试,如果生产中可以将其流入elk)
ok,所有配置完成,可以书写爬虫代码了!