/crawler-learning

🕷 一个基于 HttpClient,Jsoup,WebMagic 的迷你版 JD 商城图书爬虫 ~

Primary LanguageJavaMIT LicenseMIT

🕷 JD商城图书爬虫

版本介绍

JDBookCrawler 1.0

涉及技术 : HttpClientJsoupMySQL,详细介绍及使用指南见 : 博客文章

JDBookCrawler 2.0

涉及技术 : WebMagicMyBatisMySQL,详细介绍及使用指南见 : 博客文章

JDBookCrawler 3.0

涉及技术 : Spring BootWebMagicMyBatisMySQL,爬虫功能基于JDBookCrawler 2.0,前端设计参考项目springboot-beginner,简单点说v3.0就等于v2.0 + springboot,😅不尴尬嘿嘿嘿~

开发环境

工具 版本或描述
OS Windows 10
JDK 1.8
IDE IntelliJ IDEA 2019.1
Maven 3.6.0
MySQL 8.0.11

本项目的数据库版本为8.0.11,请广大版本为5.0.0+的同学注意咯:可通过逐个复制表结构来创建该数据库哟 ~

项目概述( JDBookCrawler 3.0 )

除此项目概述外,你也可以参考 : 博客文章

项目结构图

├─bookcrawler-v3.0
│  │  crawler.sql
│  │  pom.xml
│  │
│  │
│  └─src
│      └─main
│          ├─java
│          │  └─pers
│          │      └─huangyuhui
│          │          └─bookcrawler
│          │              │  BookcrawlerApplication.java
│          │              │
│          │              ├─controller
│          │              │      BookController.java
│          │              │
│          │              ├─crawler
│          │              │  │  BookCrawlerTest.java
│          │              │  │
│          │              │  ├─dao
│          │              │  │      BookDao.java
│          │              │  │
│          │              │  ├─mapper
│          │              │  │      BookMapper.xml
│          │              │  │
│          │              │  ├─pojo
│          │              │  │      Book.java
│          │              │  │
│          │              │  ├─resources
│          │              │  │      db.properties
│          │              │  │      log4j.properties
│          │              │  │      mybatis-config.xml
│          │              │  │
│          │              │  ├─task
│          │              │  │      BookProcessor.java
│          │              │  │
│          │              │  └─util
│          │              │          FileUtils.java
│          │              │          HttpUtils.java
│          │              │          MyBatisUtils.java
│          │              │
│          │              ├─dao
│          │              │      BookMapper.java
│          │              │      BookMapper.xml
│          │              │
│          │              ├─pojo
│          │              │      Book.java
│          │              │
│          │              └─service
│          │                  │  BookService.java
│          │                  │
│          │                  └─impl
│          │                          BookServiceImpl.java
│          │
│          └─resources
│              │  application.properties
│              │
│              ├─static
│              │  │  exist.txt
│              │  │
│              │  └─easyui
│              │      │  jquery.easyui.min.js
│              │      │  jquery.min.js
│              │      │
│              │      ├─css
│              │      │      default.css
│              │      │      demo.css
│              │      │
│              │      ├─js
│              │      │      outlook2.js
│              │      │      validateExtends.js
│              │      │
│              │      └─themes
|              |         |
│              │         |(略..)
│              │
|              |        
│              └─templates
│                      bookList.html
│                      intro.html
│                      main.html
│
└─demonstration-images
        BookCrawler-V3.0-bookList.PNG
        BookCrawler-V3.0-Intro.PNG

crawler包存放的是JDBookCrawler-v2.0,既3.0使用了2.0的爬虫功能,其本身仅加入了页面可视化功能

运行指南

  1. crawler.sql : 数据库文件
BookCrawler-v3.0/bookcrawler-v3.0/crawler.sql
  1. BookCrawlerTest.java : 爬虫启动程序
package pers.huangyuhui.bookcrawler.crawler;


import pers.huangyuhui.bookcrawler.crawler.task.BookProcessor;
import pers.huangyuhui.bookcrawler.crawler.util.FileUtils;

/**
 * @project: bookcrawler
 * @description: 爬虫测试程序
 * @author: 黄宇辉
 * @date: 7/11/2019-9:12 PM
 * @version: 2.0
 * @website: https://yubuntu0109.github.io/
 */
public class BookCrawlerTest {
    //指定图书关键字
    private static final String KEY_WORD = "网络爬虫";
    //指定页码数,每页可爬取三十条数据( 注:下一页的页码数为前一页的页码数加二 )
    private static final int END_PAGE_NUM = 2;
    private static final int CURRENT_PAGE_NUM = 1;
    //指定项目下存储书籍图片的文件夹路径
    private static final String IMAGE_PATH = FileUtils.getDirPath("/static/download/bookImage/");
    //指定JD商城书籍列表页面的链接
    private static final String URL = "https://search.jd.com/Search?keyword=" + KEY_WORD + "&enc=utf-8&page=";

    /**
     * @description: 启动爬虫程序
     * @date: 2019-07-15 4:09 PM
     */
    public static void main(String[] args) {
        new BookProcessor(URL, IMAGE_PATH, CURRENT_PAGE_NUM, END_PAGE_NUM).run();
    }
}

启动爬虫后其控制台输出的日志信息请参考 : JDBookCrawler v2.0

  1. BookcrawlerApplication.java : 项目启动类( 爬虫程序成功运行完成后,就可以启动该springboot项目啦,这操作不尴尬哈哈哈 ~ )
package pers.huangyuhui.bookcrawler;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @project: bookcrawler
 * @description: springboot项目启动类
 * @author: 黄宇辉
 * @date: 7/11/2019-9:16 PM
 * @version: 3.0
 * @website: https://yubuntu0109.github.io/
 */
@SpringBootApplication
@MapperScan("pers.huangyuhui.bookcrawler.dao") //扫描Mapper接口
public class BookcrawlerApplication {

    public static void main(String[] args) { SpringApplication.run(BookcrawlerApplication.class, args); }
}
  1. 项目成功启动后,其项目主页,图书数据管理页如下图所示 :

📚更多有趣项目及详细学习笔记请前往我的个人博客哟(づ ̄3 ̄)づ╭❤~ : https://yubuntu0109.github.io/

👩‍💻学习笔记已全部开源 : https://github.com/YUbuntu0109/YUbuntu0109.github.io

☕ Look forward to your contribution, if you need any help, please contact me~ QQ : 3083968068