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。添加一条<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。
阅读更多- Spring Boot + Java爬虫 + 部署到Linux(四、使用WebSocket实现消息推送,并解决websocket中的autowired问题)
- springboot项目配置多环境打包部署遇到的问题总结
- Spring Boot + Java爬虫 + 部署到Linux (二、Java爬虫)
- Spring Boot + Java爬虫 + 部署到Linux(六、后端Controller实现、下载文件以及登录验证拦截器)
- Spring Boot + Java爬虫 + 部署到Linux (三、Java爬虫使用代理,模拟登录,保存cookie)
- Spring Boot + Java爬虫 + 部署到Linux(八、Nginx实现反向代理、动静分离和websocket处理)
- Spring Boot + Java爬虫 + 部署到Linux(七、前端)
- Linux环境下Spring Boot项目内置Tomcat参数配置
- springboot打包jar包找不到jsp文件以及在linux永久执行java -jar以及springboot的多环境配置
- Spring Boot + Java爬虫 + 部署到Linux(五、使用spring data JPA 实现数据访问层)
- Linux环境下Spring Boot项目内置Tomcat参数配置
- Linux中Java的web项目开发环境配置(JDK1.7+Tomcat7+Mysql5.5+eclipse)
- JAVA学习遇到问题之项目部署环境配置
- Jenkins打包部署SpringBoot,多环境配置
- 阿里云ECS服务器Linux环境下配置php服务器(三)--项目部署篇
- SpringBoot application.yml logback.xml,多环境配置,支持 java -jar --spring.profiles.active
- Java--Eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上
- spring-boot项目在外部tomcat环境下部署
- LINUX环境中部署JAVA项目步骤