您的位置:首页 > 运维架构 > Linux

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

2018-06-25 20:22 821 查看

    最近接触了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。添加一条<localRepository>f:/Maven/repository</localRepository>,中间的信息可以自由设置。如图:


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

<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
大概位置在165行左右。

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



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



至此,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项目的配置文件。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>yly.crawler</groupId>
<artifactId>eCrawler</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>eCrawler</name>
<description>eCrawler</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
</parent>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency><!-- 这个需要为 true 热部署才有效 -->

<!-- mybatis
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.1.1</version>
</dependency>  -->
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- jpa-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--httpclient-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>

</dependencies>

<properties>
<java.version>1.8</java.version>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>
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

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐