java爬虫系列第一讲-爬虫入门(爬取动作片列表)

1. 概述

java爬虫系列包含哪些内容?

  1. java爬虫框架webmgic入门
  2. 使用webmgic爬取 http://ady01.com 中的电影资源(动作电影列表页、电影下载地址等信息)
  3. 使用webmgic爬取 极客时间 的课程资源(文章系列课程 和 视频系列的课程)

本篇文章主要内容:

  1. 介绍java中好用的爬虫框架
  2. java爬虫框架webmagic介绍
  3. 使用webgic爬取动作电影列表信息

2. java中好用的爬虫框架

如何判断框架是否优秀?

  1. 容易学习和使用,网上对应的学习资料比较多,并且比较完善
  2. 使用的人比较多,存在的坑别人已经帮你填的差不多了,用起来会更顺心一些
  3. 框架更新比较快,社区活跃,可以快速体验一些更好的功能,并与作者进行交流
  4. 框架稳定、方便扩展

按照以上几点的,推荐一款非常好用的java爬虫框架webmgic

3. webmgic介绍

  • WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。
  • webmagic官网:http://webmagic.io/
  • webmgic中文学习文档:http://webmagic.io/docs/zh/

4.使用webgic爬取动作电影列表

使用webgic爬取 爱电影 电影列表资源信息

示例源码地址

1. 新建springboot项目java-pachong

java爬虫系列第一讲-爬虫入门(爬取动作片列表)_第1张图片

2. 导入maven配置

<dependencies>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starterartifactId>
    dependency>

    <dependency>
        <groupId>org.projectlombokgroupId>
        <artifactId>lombokartifactId>
        <optional>trueoptional>
    dependency>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-testartifactId>
        <scope>testscope>
    dependency>

    
    <dependency>
        <groupId>us.codecraftgroupId>
        <artifactId>webmagic-coreartifactId>
        <version>0.7.3version>
        <exclusions>
            <exclusion>
                <artifactId>fastjsonartifactId>
                <groupId>com.alibabagroupId>
            exclusion>
            <exclusion>
                <artifactId>commons-ioartifactId>
                <groupId>commons-iogroupId>
            exclusion>
            <exclusion>
                <artifactId>commons-ioartifactId>
                <groupId>commons-iogroupId>
            exclusion>
            <exclusion>
                <artifactId>fastjsonartifactId>
                <groupId>com.alibabagroupId>
            exclusion>
            <exclusion>
                <artifactId>fastjsonartifactId>
                <groupId>com.alibabagroupId>
            exclusion>
            <exclusion>
                <artifactId>log4jartifactId>
                <groupId>log4jgroupId>
            exclusion>
            <exclusion>
                <artifactId>slf4j-log4j12artifactId>
                <groupId>org.slf4jgroupId>
            exclusion>
        exclusions>
    dependency>
    <dependency>
        <groupId>us.codecraftgroupId>
        <artifactId>webmagic-extensionartifactId>
        <version>0.7.3version>
    dependency>
    <dependency>
        <groupId>us.codecraftgroupId>
        <artifactId>webmagic-seleniumartifactId>
        <version>0.7.3version>
    dependency>
    <dependency>
        <groupId>net.minidevgroupId>
        <artifactId>json-smartartifactId>
        <version>2.2.1version>
    dependency>
    
    <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>fastjsonartifactId>
        <version>1.2.49version>
    dependency>
    <dependency>
        <groupId>commons-langgroupId>
        <artifactId>commons-langartifactId>
        <version>2.6version>
    dependency>
    <dependency>
        <groupId>commons-iogroupId>
        <artifactId>commons-ioartifactId>
        <version>2.6version>
    dependency>
    <dependency>
        <groupId>commons-codecgroupId>
        <artifactId>commons-codecartifactId>
        <version>1.11version>
    dependency>
    <dependency>
        <groupId>commons-collectionsgroupId>
        <artifactId>commons-collectionsartifactId>
        <version>3.2.2version>
    dependency>
dependencies>

3. 编写抓取电影数据的代码

  • 在谷歌浏览器中访问 爱电影动作片列表
  • F12发现列表页中数据是通过一个ajax请求获取的,我们获取请求地址是:http://m.ady01.com/rs/film/listJson/1/2?_=1555726508180
  • 编写抓取代码
package com.ady01.demo1;

import lombok.extern.slf4j.Slf4j;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.processor.PageProcessor;

/**
 * description:第一个爬虫示例,爬去动作片列表信息 
* time:2019/4/20 10:58
* author:ready [email protected] */
@Slf4j public class Ady01comPageProcessor implements PageProcessor { @Override public void process(Page page) { log.info("爬取成功!"); log.info("爬取的内容:" + page.getRawText()); } @Override public Site getSite() { return Site.me().setSleepTime(1000).setRetryTimes(3); } public static void main(String[] args) { String url = "http://m.ady01.com/rs/film/listJson/1/2?_=1555726508180"; Spider.create(new Ady01comPageProcessor()).addUrl(url).thread(1).run(); } }

4. 运行爬虫代码

运行Ady01comPageProcessor中的main方法,执行结果如下:

java爬虫系列第一讲-爬虫入门(爬取动作片列表)_第2张图片

5.总结

  1. 本文中主要用了一个示例说明webgic是如此简单就可以完成数据的抓取工作,从代码中可以看出复杂的代码webmagic都帮我们屏蔽了,只需要我们去关注业务代码的编写。
  2. 文章中没有详细介webmagic如何使用,至于我为何没有在文档中去做说明,主要是webigc已经提供了非常完善的学习文档,可以移步到webgic中文文档,需要更深入了解的可以研究一下webgic的源码,对你编写爬虫是非常有用的。
  3. 明日我们将爬取每个动作电影详情页信息,采集详情页中电影的下载地址
  4. 示例代码,导入到idea中运行,idea中需要安装mavenlombok的支持
  5. 更多技术文章请关注公众号:javacode2018

你可能感兴趣的:(java爬虫系列)