2. 技术基础

本章主要讲解爬虫需要用到的 Java 常识和一些类库等,方面初学者或者使用其他语言的同学快速上手,如果您本身会使用 Java 编程语言,那么本章可以略过不看。

2.1 开发环境

本教程选择 Java 编程语言环境,而没有使用 python。目前网上存在大量的 python 爬虫教程,而 Java 教程寥寥无几,这并不代表 Java 做爬虫不行,Java 语言拥有严谨的语法结构和海量的类库,我认为 Java 在开发爬虫方面拥有后发优势。

准备开发环境

JDK

Oracle官网下载 JDK 并安装。
本教程选择 Java SE 8 版本 jdk,您也可以自行选择更高版本,理论上都是向下兼容的。

IntelJ IDEA

开发工具我选择了 IDEA 而不是 Eclipse,从IntelJ官网下载并安装。

IDEA 比 Eclipse 好用太多,基本属于用过就回不去的感觉。但是 IDEA 是收费软件,建议如果有能力还是购买正版支持吧,学生凭借学生证可以申请正版授权免费使用,嫌麻烦还可以使用社区版(免费),或者自行破解,我在这里就不提供破解方法了。

MySQL

结构化数据存储,我们选用MySQL,版本选择5.7。之所以不选择更高版本,是因为目前绝大多数云服务器提供的版本最高就是5.7,为了保持统一,所以我们也选择5.7。

MySQL官网下载MySQL并安装。

为了方便测试和查看数据,我们还需要一个图形化的数据库编辑器。

这里选择Navicat for MySQL做为我们的图形化工具。

2.2 Java 基础

基础这节,仅列一下需要了解的知识点。如果您不具备Java基础,请自行买实体书或寻找网络教程学习。

  • 类和对象
    Java 是一种面向对象的编程语言,类和对象是其中的核心概念。类是定义对象的模板,对象是类的实例化。在类中定义属性和方法,对象可以使用这些属性和方法。
  • 常量
    常量是指在程序中固定不变的值。Java 中使用 final 关键字来定义常量,一旦赋值就不能再修改。
  • 命名规范
    Java 有一套命名规范,例如类名应该使用驼峰式命名法,方法名和变量名应该使用小写字母和下划线分隔的方式命名等。
  • 基本语法
    • 条件判断
      Java 中使用 if 和 switch 语句来进行条件判断。if 语句用于根据条件执行不同的代码块,switch 语句用于根据变量的值执行不同的代码块。
    • 循环
      Java 中使用 for、while 和 do-while 语句来进行循环。for 循环用于循环次数已知的情况,while 和 do-while 循环用于循环次数未知的情况。
  • 数组
    数组是一种存储相同类型数据的容器。Java 中的数组是静态的,一旦定义就不能改变大小。
  • 位运算
    Java 中的位运算符用于对整数进行位运算,例如按位与、按位或、按位异或等。位运算符的操作对象是整数的二进制形式。
  • 枚举
    枚举是一种定义常量的方式,它是一种特殊的类。枚举类型是一组有限的、具有相同特征的常量集合。
  • 比较器
    Java 中的比较器是一种可以自定义对象比较方式的接口。比较器可以用来对对象进行排序等操作。
  • 方法
    方法是 Java 中的一种可重用代码块。方法可以接收参数并返回值。方法的定义包括方法名、参数列表、返回类型和方法体。
  • 集合类
    • 动态数组:[]
      Java 中的动态数组是一种可以动态增长的数组,使用 ArrayList 类实现。
    • 散列表:HashMap
      Java 中的散列表是一种键值对存储的数据结构,使用 HashMap 类实现。
  • 文件
    • 文本文件
      Java 中使用 FileReader 和 FileWriter 类来读写文本文件。
    • 二进制文件
      Java 中使用 FileInputStream 和 FileOutputStream 类来读写字节流。

2.3 框架与类库

  • 常用工具集 Hutool
    Hutool 是一个小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java 语言也可以“甜甜的”。
    Hutool 是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的 bug。
    源码地址:https://www.hutool.cn
    maven 引用:
    <!-- 一个Java工具包 http://www.hutool.cn/ -->
    <dependency>
        <groupId>cn.hutool</groupId>
        <artifactId>hutool-all</artifactId>
        <version>4.5.1</version>
    </dependency>
  • 图片处理库 thumbnailator
    thumbnailator 是谷歌出品的一个图像处理类库,可以压缩图片大小、修改尺寸、支持网络地址,便于我们采集图片并存储为统一格式,其链式赋值方式极易使用,虽然已不再维护,但是够用就好。
    源码地址:https://github.com/coobird/thumbnailator
    maven 引用:
    <!-- google图片压缩 -->
    <dependency>
        <groupId>net.coobird</groupId>
        <artifactId>thumbnailator</artifactId>
        <version>0.4.8</version>
    </dependency>