你有多久没有看星星了呢?【爬取NASA的科普网站上的所有图片】
1. 前景提要
在网上冲浪的时候看到原来NASA航天局有科普网站,每天一张科普图片,而且是非常高清的那种,很想下载下来做壁纸。
所以打算写一个Java爬虫爬取所有的图片,也可以加入一些通知,每天晚上进行检查,当检查到有更新的时候,第二天早上起床推送到手机端。当然这个功能还没有实现。
2. 进行开发
2.1 开发环境
- Maven
- Java 17 (为了顺行Spring Framework 6 之后的潮流,所以打算之后的开发都用Zulu JDK17)
- WebMagic(Java的爬虫框架)
2.2 Maven pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>com.yeahvin</groupId>
<artifactId>getStars</artifactId>
<version>1.0.1-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-core</artifactId>
<version>0.7.5</version>
</dependency>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-extension</artifactId>
<version>0.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.yeahvin.StartApplication</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
2.3 Java爬虫webmagic 的使用
这个框架也是非常容易上手和使用,官方手册在这里 WebMagic in Action
对于这个框架的使用,这里简单的介绍一下,如下图,我们开发者需要在整个流程中需要做的是:
- 编写PageProceser
- 编写Pipeline
就可以完成一个非常简单的爬虫。推荐大家先看看这个例子:第一个例子
在这个项目中,对于整个nasa网站的分析其实非常的简单,流程大概是
请求总览页面-->获取已经存在所有链接,进行遍历-->请求详情网页--->下载图片