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

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

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

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

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

二. 注解版本源码分析

现在只爬取单个页面的电影数据,这里写死这个页面@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);
    }
}

三. 爬到的数据展示

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值