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爬蟲框架webmgicjava

3. webmgic介紹

4.使用webgic爬取動做電影列表

使用webgic爬取 愛電影 電影列表資源信息git

示例源碼地址web

1. 新建springboot項目java-pachong

2. 導入maven配置

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <!-- webmagic start -->
    <dependency>
        <groupId>us.codecraft</groupId>
        <artifactId>webmagic-core</artifactId>
        <version>0.7.3</version>
        <exclusions>
            <exclusion>
                <artifactId>fastjson</artifactId>
                <groupId>com.alibaba</groupId>
            </exclusion>
            <exclusion>
                <artifactId>commons-io</artifactId>
                <groupId>commons-io</groupId>
            </exclusion>
            <exclusion>
                <artifactId>commons-io</artifactId>
                <groupId>commons-io</groupId>
            </exclusion>
            <exclusion>
                <artifactId>fastjson</artifactId>
                <groupId>com.alibaba</groupId>
            </exclusion>
            <exclusion>
                <artifactId>fastjson</artifactId>
                <groupId>com.alibaba</groupId>
            </exclusion>
            <exclusion>
                <artifactId>log4j</artifactId>
                <groupId>log4j</groupId>
            </exclusion>
            <exclusion>
                <artifactId>slf4j-log4j12</artifactId>
                <groupId>org.slf4j</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>us.codecraft</groupId>
        <artifactId>webmagic-extension</artifactId>
        <version>0.7.3</version>
    </dependency>
    <dependency>
        <groupId>us.codecraft</groupId>
        <artifactId>webmagic-selenium</artifactId>
        <version>0.7.3</version>
    </dependency>
    <dependency>
        <groupId>net.minidev</groupId>
        <artifactId>json-smart</artifactId>
        <version>2.2.1</version>
    </dependency>
    <!-- webmagic end -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.49</version>
    </dependency>
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.6</version>
    </dependency>
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.11</version>
    </dependency>
    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.2</version>
    </dependency>
</dependencies>

3. 編寫抓取電影數據的代碼

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;

/**
 * <b>description</b>:第一個爬蟲示例,爬去動做片列表信息 <br>
 * <b>time</b>:2019/4/20 10:58 <br>
 * <b>author</b>:ready likun_557@163.com
 */
@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方法,執行結果以下: springboot

5.總結

  1. 本文中主要用了一個示例說明webgic是如此簡單就能夠完成數據的抓取工做,從代碼中能夠看出複雜的代碼webmagic都幫咱們屏蔽了,只須要咱們去關注業務代碼的編寫。
  2. 文章中沒有詳細介webmagic如何使用,至於我爲什麼沒有在文檔中去作說明,主要是webigc已經提供了很是完善的學習文檔,能夠移步到webgic中文文檔,須要更深刻了解的能夠研究一下webgic的源碼,對你編寫爬蟲是很是有用的。
  3. 明日咱們將爬取每一個動做電影詳情頁信息,採集詳情頁中電影的下載地址
  4. 示例代碼,導入到idea中運行,idea中須要安裝mavenlombok的支持
  5. 更多技術文章請關注公衆號:javacode2018
相關文章
相關標籤/搜索