Spring Boot + Java爬虫 + 部署到Linux (一、环境配置,新建一个Spring Boot项目)

    最近接触了Spring Boot这个框架,感觉既方便又简单,相比于之前的SSM(H),需要的配置变少了很多,很多变成约定好的默认的配置即可。然后就想用Spring Boot开发一个Web网站,功能就是一个图片爬虫,然后将爬下来的图片提供打包下载,最后将其部署到一台Linux(CentOS7)服务器上。

    如果是只想了解Java爬虫也是可以的,爬虫是相对独立的一部分。当初这个爬虫是我用python写过一次,其实当时想用Java来着,结果去搜了一下,感觉Java好复杂,python却很简单。现在发现有一个httpclient的包,很方便好用,而且都用Java来写比较统一、方便管理调度。

    网站支持代理、登录验证、cookie设置、websocket、nginx动静分离之类的,其实业务功能相当的简单,主要是为了学习和练习,以及方便我爬图片。因为有的网站就很烦,一个图集几十上百张图,却不提供打包下载功能。难道要手动一张一张的点击和右键吗?我做的这个爬虫,一次就爬一个图包,当然也可以做成一次爬多个或者分布式爬取,这样效率就更高了。但是由于时间和精力的关系,很多可以补充和完善以及许多的不足也没办法了... ...

    首先的准备工作就是一台正常的PC机+Windows系统,还要有一点Java、Sql、Linux、前端以及Spring MVC的知识。一开始就要配置环境,首先下载jdk,要求版本要1.8以上。这个直接百度在官网就可以下载了,安装完毕之后然后配置环境变量即可。IDE(集成开发环境)我用的是Eclipse,因为用习惯了,也可以用IDEA。还需要下载的一个重要的工具就是Maven,Maven 是专门用于构建和管理Java相关项目的工具。Maven是意第绪语,依地语(犹太人使用的国际语),表示专家的意思。 所以用Maven管理Java 项目,你就是专家了。这些在搜索官网就可以下载了,Maven也配置一个环境变量,方便使用。

    Maven的一个重要概念就是仓库,仓库是放jar包和其源码的地方。maven采用一个仓库,多个项目的方式,让多个项目共享一个仓库里的相同jar包。这样很方便又不浪费资源。仓库的默认位置是${user.home}/.m2/repository。user.home就是C盘你的电脑用户的文件夹,但是放C盘可能不太好,所以我们修改一下仓库的位置。打开Maven的安装目录,然后打开里面的\conf\settings.xml。添加一条f:/Maven/repository,中间的信息可以自由设置。如图:

Spring Boot + Java爬虫 + 部署到Linux (一、环境配置,新建一个Spring Boot项目)_第1张图片

    还有一点需要配置的是下载的镜像地址,就是下载jar包的地址。默认的地址是外国的,比较慢,所以我们用阿里云的,速度很快。在mirrors里加上


            alimaven
            central
            aliyun maven
            http://maven.aliyun.com/nexus/content/repositories/central/

大概位置在165行左右。

然后就是Eclipse设置Maven,菜单->Window->Preferences->Maven->Installations-> 指定我们的Maven安装路径,如图(配置好之后的)

Spring Boot + Java爬虫 + 部署到Linux (一、环境配置,新建一个Spring Boot项目)_第2张图片


然后配置一下配置文件,进入菜单->Window->Preferences->Maven->User Settings,都设置成刚才配置的setting.xml路径。如图:

Spring Boot + Java爬虫 + 部署到Linux (一、环境配置,新建一个Spring Boot项目)_第3张图片


至此,Maven就算配置完毕了。

现在开始创建Spring Boot项目。

首先新建个 maven 项目,菜单 -> File -> New -> Other -> Maven -> Maven -> Maven Project -> New Maven Project
勾上这个 Create a simple project (skip archetype selection),Springboot就是个简单的maven 项目。输入一些参数

GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。比如传统包名com.oracle等等。
ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。可以设为传统的项目名字如Crawler等。
其余name,我设置的和ArtifactID一样,描述就描述一下项目就可以。点击确定之后就会生成项目,可以看到下面有个pom.xml。这个就是Maven项目的配置文件。


  4.0.0
  yly.crawler
  eCrawler
  0.0.1-SNAPSHOT
  eCrawler
  eCrawler
  
  
        org.springframework.boot
        spring-boot-starter-parent
        2.0.3.RELEASE
    
 
    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
          org.springframework.boot
          spring-boot-starter-thymeleaf
        
        
    		org.springframework.boot
    		spring-boot-starter-websocket
		
        
        
              junit
              junit
              test
        
        
       
        
            org.springframework.boot
            spring-boot-devtools
            true  
        
       
        
		
		
			mysql
			mysql-connector-java
			
          
        
            org.springframework.boot
            spring-boot-starter-data-jpa
         
        
        
  			org.apache.httpcomponents
  		httpclient
 		 
 		 
    
 
    
        1.8
    
 
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    
  
  
  

parent就是父文件,可以类比Java继承父类,这个项目用的是当前最新的2.0.3版本的spring boot。下面的java的版本设为1.8,下面的build设为spring-boot的为Maven设置的插件。中间的dependencies(依赖)就看你项目需要什么,就往上加。可以看到我的项目用到了web,thymeleaf,websocket,热部署,mysql,jpa,httpclient。保存好pom.xml之后,eclipse就会开始自动更新项目,下载相关的依赖jar包,右下角有进度条。稍等片刻,使下载完毕即可。如果没有自动更新,就右键项目,然后maven->update project。

然后我们在项目最上面的src/main/java创建一个包,比如yly.crawl.springboot;然后在里面新建一个Java文件,可以命名为Application,然后写上下面的代码:

package yly.crawl.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
		
	}
}

可以看出,有main方法直接运行即可。这是因为Spring Boot 已经将tomcat封装好了。

然后我们再新建包的时候,都要在这个Application所在的包的子目录下,因为Sring Boot会默认扫描下面的包,如果放其他地方,就不会被自动扫描到了。当然也可以单独设置,就麻烦了,一般没有必要。

新建一个放Controller的包,新建一个HelloController类。

package yly.crawl.springboot.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
public class HelloController {
 
    @RequestMapping("/hello")
    public String hello() {
        return "Hello Spring Boot!";
    }
 
}

其中@RestController是@ResponseBody和@Controller的缩写,表示这是一个Controller,且直接返回网页内容。@RequestMapping里面是“/hello”表示匹配/hello这个路径。

    然后运行Application,打开浏览器,地址栏输入http://127.0.0.1:8080/hello,就可以访问了。网页内容就是Hello Spring Boot。如果有防火墙之类的设置,可以百度怎么解决。如果控制台提示端口被占用,则排查端口,然后如果是一般进程就关掉就可以了,参考https://jingyan.baidu.com/article/3c48dd34491d47e10be358b8.html。

你可能感兴趣的:(Spring,Boot,爬虫)