java 爬虫大型教程(一)

java 爬虫大型教程(一)

写在开始前,既然是大型教程,那就从最初始的环境变量开始搭建说起。

电脑环境:我的电脑是macbook pro,因此系统环境变量配置是和Windows不一样的,如果你的电脑是Windows系统,可以百度下相关环境变量配置。

爬虫框架:使用的是webmagic,这是国内不错的爬虫框架,借鉴于python的scrapy框架。

Java环境搭建

首先提一句,从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)

maven环境搭建

1.下载安装包

官方下载地址:https://maven.apache.org/download.cgi

如图:
maven-1

2.解压指定位置

你可以把maven解压至任何地方,这里我把maven放在了/Users/duke/Documents/Software 这个文件夹里,解压命令不需多言。

我只简单的描述一下maven,Java程序运行需要各种各样的jar包,你可能要费心费力的去处理jar包和环境配置问题,但是使用maven就可以解决这个问题。如果你使用过git,就知道代码首先是要commit本地仓,然后在push到git远程仓。maven是相同的道理,它会有个本地仓,如果java代码中使用了相关jar包,会首先在本地仓寻找,如果没找到,会向远程仓请求,下载到本地仓供使用。

3.环境配置

① 打开终端 ,输入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 否安装成功。

maven-2

4.更换maven下载源

① 用IDEA或Eclipse打开/Users/duke/Documents/Software/apache-maven-3.6.0/conf/settings.xml
② 找到mirrors元素(150行左右), 在它里面添加子元素mirror
<mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>*</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

maven-3

IDEA使用maven创建简单的爬虫项目

第一步:只是想使用maven来下载相关包,所以不用选中create from archetype,点击next,如下图:
maven-4

第二步:GroupId(一般填反转后公司域名)和ArtifactId(项目名)还有Version,这三个属性目的是标识你的项目的唯一性,点击next,如下图:

maven-5

第三步:以上配置按需修改,一般保持默认,很简单就是保存项目的路径,点击Finish,如下图:
maven-6

第四步:在接下来的面板中选择本地的maven/Users/duke/Documents/Software/apache-maven-3.6.0

(如果是第一次创建项目,会有预创建过程,控制台会显示在从阿里云下载模版,去喝杯咖啡等待即可)

第五步:进入了首页,原始状态如下图:

maven-7

第六步:添加坐标:

   <properties>
    	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
	</properties>

	<dependencies>
        
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <dependency>
            <groupId>us.codecraft</groupId>
            <artifactId>webmagic-core</artifactId>
            <version>0.7.3</version>
        </dependency>

        <dependency>
            <groupId>us.codecraft</groupId>
            <artifactId>webmagic-extension</artifactId>
            <version>0.7.3</version>
        </dependency>

        <dependency>
            <groupId>us.codecraft</groupId>
            <artifactId>webmagic-extension</artifactId>
            <version>0.7.3</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

    </dependencies>

	<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

然后点击右下角import changes,加载完成后,右下角import changes消失,如下图:
maven-8

第七步:配置log4j.properties

我按照我的习惯,新建一个config文件夹,将其标记为source root

maven-9

配置log4j

# priority  :debug<info<warn<error
#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,所有配置完成,可以书写爬虫代码了!

猜你喜欢

转载自blog.csdn.net/u014793102/article/details/86633837