新手上路:Java爬虫入门第一讲,快上车,老司机开车了
java爬虫框架webmgic入门
使用webmgic爬取ady01.com 中的电影资源(动作电影列表页、电影下载地址等信息)
使用webmgic爬取 极客时间 的课程资源(文章系列课程 和 视频系列的课程)
哦对了,在分享这篇文字前,我先说一下,我这里有一份Java学习资料,直接加我的Java直播学习群:1004944760就能免费领取,长期真实有效。
本篇文章主要内容:
介绍java中好用的爬虫框架
java爬虫框架webmagic介绍
使用webgic爬取动作电影列表信息
2. java中好用的爬虫框架
如何判断框架是否优秀?
容易学习和使用,网上对应的学习资料比较多,并且比较完善
使用的人比较多,存在的坑别人已经帮你填的差不多了,用起来会更顺心一些
框架更新比较快,社区活跃,可以快速体验一些更好的功能,并与作者进行交流
框架稳定、方便扩展
按照以上几点的,推荐一款非常好用的java爬虫框架 webmgic
3. webmgic介绍
WebMagic 是一个简单灵活的Java爬虫框架。基于 WebMagic ,你可以快速开发出一个高效、易维护的爬虫。
webmagic 官网:webmagic.io/
webmgic中文学习文档:webmagic.io/docs/zh/
4.使用webgic爬取动作电影列表
使用webgic爬取爱电影 电影列表资源信息
1. 新建springboot项目java-pachong
2. 导入maven配置
org.springframework.bootspring-boot-starterorg.projectlomboklomboktrueorg.springframework.bootspring-boot-starter-testtest<!-- webmagic start -->us.codecraftwebmagic-core0.7.3fastjsoncom.alibabacommons-iocommons-iocommons-iocommons-iofastjsoncom.alibabafastjsoncom.alibabalog4jlog4jslf4j-log4j12org.slf4jus.codecraftwebmagic-extension0.7.3us.codecraftwebmagic-selenium0.7.3net.minidevjson-smart2.2.1<!-- webmagic end -->com.alibabafastjson1.2.49commons-langcommons-lang2.6commons-iocommons-io2.6commons-codeccommons-codec1.11commons-collectionscommons-collections3.2.2复制代码
3. 编写抓取电影数据的代码
在谷歌浏览器中访问爱电影动作片列表
F12发现列表页中数据是通过一个ajax请求获取的,我们获取请求地址
编写抓取代码
packagecom.ady01.demo1;importlombok.extern.slf4j.Slf4j;importus.codecraft.webmagic.Page;importus.codecraft.webmagic.Site;importus.codecraft.webmagic.Spider;importus.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
*/@Slf4jpublicclassAdy01comPageProcessorimplementsPageProcessor{@Overridepublicvoidprocess(Page page){ log.info("爬取成功!"); log.info("爬取的内容:"+ page.getRawText()); }@OverridepublicSitegetSite(){returnSite.me().setSleepTime(1000).setRetryTimes(3); }publicstaticvoidmain(String[] args){ String url ="http://m.ady01.com/rs/film/listJson/1/2?_=1555726508180"; Spider.create(newAdy01comPageProcessor()).addUrl(url).thread(1).run(); }}