使用Webmagic爬取豆瓣《一出好戏》评价
- 使用框架:webmagic
- 项目核心:建立DoubanProcessor类,继承webmagic的PageProcessor,重写process()方法
- 爬取网址:https://movie.douban.com/subject/26985127/comments?start=0&limit=20&sort=new_score&status=P
代码详情:
package MyWebMagic;import us.codecraft.webmagic.Page;import us.codecraft.webmagic.Site;import us.codecraft.webmagic.Spider;import us.codecraft.webmagic.processor.PageProcessor;public class DoubanProcessor implements PageProcessor {//抓取网站的相关配置,包括编码、抓取间隔、重试次数等private Site site = Site.me().setRetryTimes(3).setSleepTime(100);private static int count =0;@Overridepublic Site getSite() {return site;}@Overridepublic void process(Page page) {//获取页面需要的内容for(int i=1;i<=20;i++){System.out.println("people:"+page.getHtml().xpath("//*[@id=\"comments\"]/div["+i+"]/div[2]/h3/span[2]/a/text()").get());System.out.println("comment:"+page.getHtml().xpath("//*[@id=\"comments\"]/div["+i+"]/div[2]/p/span/text()").get());count++;}//加入满足条件的链接,实现翻页page.addTargetRequests(page.getHtml().links().regex("https://movie\\.douban\\.com/subject/26985127/comments\\?start=\\d+&limit=20&sort=new_score&status=P").all());}public static void main(String[] args) {long startTime, endTime;System.out.println("开始爬取...");startTime = System.currentTimeMillis();Spider.create(new DoubanProcessor()).addUrl("https://movie.douban.com/subject/26985127/comments?start=0&limit=20&sort=new_score&status=P").thread(5).run();// SpiderMonitor.instance().register(doubanSpider);// doubanSpider.start();endTime = System.currentTimeMillis();System.out.println("爬取结束,耗时约" + ((endTime - startTime) / 1000) + "秒,抓取了"+count+"条记录");}}
使用注解编写爬虫
package MyWebMagic;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.Formatter;
import us.codecraft.webmagic.model.annotation.TargetUrl;@TargetUrl("https://movie.douban.com/subject/26985127/comments\\?start=\\d+&limit=20&sort=new_score&status=P")
public class TestProcess {@Formatter(value = "people is %s",formatter = StringTemplateFormatter.class)@ExtractBy(value = "//div[@class=mod-bd]/div[@class=comment-item]/div[@class=comment]/h3/span[@class=comment-info]/a/text()")private String people;public String getPeople() {return people;}public void setPeople(String people) {this.people = people;}public String getComment() {return comment;}public void setComment(String comment) {this.comment = comment;}@Formatter(value = "comment is %s",formatter = StringTemplateFormatter.class)@ExtractBy(value = "//div[@class=mod-bd]/div[@class=comment-item]/div[@class=comment]/p/span[@class=short]/text()")private String comment;public static void main(String[] args){OOSpider.create(Site.me().setSleepTime(100),new ConsolePageModelPipeline(),TestProcess.class).addUrl("https://movie.douban.com/subject/26985127/comments?start=0&limit=20&sort=new_score&status=P").thread(5).run();}}
自定义Formatter如下
package MyWebMagic;import us.codecraft.webmagic.model.formatter.ObjectFormatter;public class StringTemplateFormatter implements ObjectFormatter<String> {private String template;@Overridepublic String format(String raw) throws Exception {return String.format(template, raw);}@Overridepublic Class<String> clazz() {return String.class;}@Overridepublic void initParam(String[] extra) {template = extra[0];}
}
使用Webmagic爬取豆瓣《一出好戏》评价相关推荐
- java 爬取评论,Java基于WebMagic爬取某豆瓣电影评论的实现
目的 搭建爬虫平台,爬取某豆瓣电影的评论信息. 准备 webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发.webmagic的核心非常简单,但是覆盖 ...
- 爬取豆瓣TOP250电影的评分、评价人数、短评等信息,并在其保存在sql数据库中。
爬取目标 爬取豆瓣TOP250电影的评分.评价人数.短评等信息,并在其保存在sql数据库中. 最终实现效果如图: 确定爬取的URL 爬取的网页地址为:https://movie.douban.com/ ...
- python爬虫豆瓣电影评价_使用爬虫爬取豆瓣电影影评数据Python版
在 使用爬虫爬取豆瓣电影影评数据Java版 一文中已详细讲解了爬虫的实现细节,本篇仅为展示Python版本爬虫实现,所以直接上代码 完整代码 爬虫主程序 # 爬虫启动入口 from C02.data ...
- 龙岭迷窟真的这么好看?今天我们就用 Java 爬取豆瓣数据好好分析一下!
每天早上七点三十,准时推送干货 首图来自最近热播的『鬼吹灯之龙岭迷窟』,看过上一部『鬼吹灯之怒晴湘西』同学应该能看懂这个笑点.潘粤明老师上一部还是卸岭魁首陈玉楼,这一部摇身一变成了胡八一. 好了,不扯 ...
- [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息
这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...
- python爬取豆瓣电影top250_Python爬虫 - scrapy - 爬取豆瓣电影TOP250
0.前言 新接触爬虫,经过一段时间的实践,写了几个简单爬虫,爬取豆瓣电影的爬虫例子网上有很多,但都很简单,大部分只介绍了请求页面和解析部分,对于新手而言,我希望能够有一个比较全面的实例.所以找了很多实 ...
- day02:requests爬取豆瓣电影信息
一.requests爬取豆瓣电影信息 -请求url: https://movie.douban.com/top250 -请求方式: get -请求头: user-agent cookies二.sele ...
- python爬取音乐_Python现学现用xpath爬取豆瓣音乐
昨天说了Requests库,今天来上手爬虫了. 爬虫的抓取方式有好几种,正则表达式,Lxml(xpath)与BeautifulSoup,我在网上查了一下资料,了解到三者之间的使用难度与性能 三种爬虫方 ...
- python爬虫豆瓣top250_Python 爬取豆瓣TOP250实战
学习爬虫之路,必经的一个小项目就是爬取豆瓣的TOP250了,首先我们进入TOP250的界面看看. 可以看到每部电影都有比较全面的简介.其中包括电影名.导演.评分等. 接下来,我们就爬取这些数据,并将这 ...
最新文章
- 分析方法升级三代测序辅助,优化无参转录组测序策略
- linux 查看libevent 安装目录,linux下libevent安装配置与简介 以及 linux库文件搜索路径的配置...
- I.MX6 Android busybox 从哪里生成的
- RHEL 6.6安装桌面环境GNOME
- MicroStation V8i简体中文版完全补丁安装教程(附安装包下载)
- 双向循环链表的插入与删除
- Python 打包工具cx_freeze 问题记录及解决办法
- Ubuntu16.04 jsoncpp 的安装
- sap 打印预览界面点击打印时记录打印次数_9个Excel打印神技巧!从此打印不求人!...
- 新xp系统如何链接网络连接服务器地址,xp系统如何设置宽带连接
- c语言鸡兔同笼的程序,C语言:鸡兔同笼问题
- WPF如何实现跨线程更新UI控件
- 涨握在线|欧或重启QE;英市港市合并!
- RxJava 沉思录(一):你认为 RxJava 真的好用吗?
- Chrome 插件配置
- 计算机思维在绘画方面的应用,运用电脑绘画培养学生创新思维能力
- 日语输入法使用技巧!
- Java多线程:synchronized | Volatile 和Lock和ReadWriteLock多方位剖析(一)
- 【html】svg标签
- dart和C语言计算CRC32结果不同