小工具      在线工具  汉语词典  css  js  c++  java

利用WebMagic爬豆瓣电影数据(注解版本)

Java 额外说明

收录于:43天前

继上一篇爬虫文章之后,再用注解版来抓取点数据。

WebMagic爬数据(注解版本)官方资料:http://webmagic.io/docs/zh/posts/ch5-annotation/

1.目标页面(https://www.douban.com/doulist/3907668)

爬取豆瓣电影数据(电影名称、评分、导演信息、影片信息)界面如下图:

2.注解版源码分析

现在我们只爬取单个页面的电影数据,这里写这个页面@TargetUrl(value = "(https://www.douban.com/doulist/3907668/)")

如果要抓取本页面下的子页面,可以这样写@TargetUrl(value = "(https://www.douban.com/doulist/3907668/*)"),也可以使用正则表达式。

主要逻辑代码如下:

package com.robinboot.service.WebMagic.Douban;

import com.robinboot.service.WebMagic.HttpClientDownloader;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.model.ConsolePageModelPipeline;
import us.codecraft.webmagic.model.OOSpider;
import us.codecraft.webmagic.model.annotation.ExtractBy;
import us.codecraft.webmagic.model.annotation.TargetUrl;

import java.util.List;

/**
 * @auther: TF12778
 * @date: 2021/1/26 16:58
 * @description: 注解版本
 * 豆瓣电影 https://blog.csdn.net/weixin_42526141/article/details/83069599
 *
 * 参考:https://my.oschina.net/anxiaole/blog/755965
 */
@Data
@TargetUrl(value = "(https://www.douban.com/doulist/3907668/)")
public class DoubanModel {

    @ExtractBy("//div[@class='title']/a/text()")
    List<String> titles;
    @ExtractBy("//div[@class='post']/a")
    List<String> movieUrls;
    @ExtractBy("//div[@class='rating']/span[@class='rating_nums']/text()")
    List<String> ratings;
    @ExtractBy("//div[@class='abstract']")
    List<String> attrFields;


    private static Site site = Site.me()
            .setUserAgent("Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0")
//            .setRetryTimes(3)
            .setSleepTime(3000);

    public static void main(String[] args) {
        OOSpider.create(site,
                new DoubanPageModelPipeline()// ConsolePageModelPipeline 这里使用的Pipeline是打印到控制台。
                , DoubanModel.class)
                .setDownloader(new HttpClientDownloader())
                .addUrl("https://www.douban.com/doulist/3907668/")
                .thread(1)
                .run();
    }
}

爬取结果打印处理源码:

import lombok.extern.slf4j.Slf4j;
import us.codecraft.webmagic.Task;
import us.codecraft.webmagic.pipeline.PageModelPipeline;

/**
 * @auther: TF12778
 * @date: 2021/1/28 18:56
 * @description:
 */
@Slf4j
public class DoubanPageModelPipeline implements PageModelPipeline<DoubanModel> {

    @Override
    public void process(DoubanModel doubanModel, Task task) {
       log.info("doubanModel:", doubanModel);
    }
}

3、爬取数据展示

. . .

相关推荐

额外说明

Java创建线程的三种方法

第一种方法:继承Thread类         创建一个类,继承Thread类,并重写run方法。 //继承Thread类 class MyThread extends Thread{ @Override public void run(

额外说明

【小Y学算法】⚡️每日LeetCode打卡⚡️——33.杨辉三角

-前言 -原题样例:杨辉三角 -C#方法:动态规划 -Java 方法一:数学 -总结 -往期优质文章分享 -前言 - 算法题 - - 每天打卡一道算法题,既是一个学习过程,又是一个分享的过程- - 提示:本专栏解题 编程语言一律使用 C# 和 Java

额外说明

⭐️C#零基础到入门 ⭐️| 带你认识编程中的—23种设计模式 & 六大设计原则

设计模式- 设计模式:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。设计模式使代码开发真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。

额外说明

【HTML&&CSS】设置导航栏

-专栏【 前端易错合集】 -喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 -音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题- 目录 -效果  -代码:  -注意 最近到期末了,小吉要期末突击-,所以最近发布的文章可能比较少,也请大家多多谅解

额外说明

Java讲课笔记02:Java集成开发环境

文章目录 零、本讲学习目标 第一部分 安装使用IntelliJ IDEA 一、讲稿下载链接 二、下载的提取码 三、讲课笔记提纲 第二部分 安装使用Eclipse 一、下载Eclipse 二、安装Eclipse 三、使用Eclipse 1、启动Eclips

额外说明

Typora教程(附安装包)

Typora教程:添加链接描述 Typora安装包: 链接:https://pan.baidu.com/s/14fTQQmPQmf08pi833RT6Cg 提取码:j712 复制这段内容后打开百度网盘手机App,操作更方便哦

额外说明

Internet Explorer 将每个域 cookie 限制从 20 增加至 50

简介 <script type=text/javascript>loadTOCNode(1, 'summary');</script> 本文介绍 Internet Explorer 将每个域 cookie 限制从 20 增加至 50。 默认情况下,Int

额外说明

【Jmeter】插件详解:函数助手(Function Helper Dialog)

目录 一、Function Helper Dialog(函数助手对话框) 二、函数(68 个) ☆ __base64Decode ☆ __base64Encode ☆ __BeanShell ☆ __caseFormat ☆ __changeCase

ads via 小工具