• 使用框架: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爬取豆瓣《一出好戏》评价相关推荐

  1. java 爬取评论,Java基于WebMagic爬取某豆瓣电影评论的实现

    目的 搭建爬虫平台,爬取某豆瓣电影的评论信息. 准备 webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发.webmagic的核心非常简单,但是覆盖 ...

  2. 爬取豆瓣TOP250电影的评分、评价人数、短评等信息,并在其保存在sql数据库中。

    爬取目标 爬取豆瓣TOP250电影的评分.评价人数.短评等信息,并在其保存在sql数据库中. 最终实现效果如图: 确定爬取的URL 爬取的网页地址为:https://movie.douban.com/ ...

  3. python爬虫豆瓣电影评价_使用爬虫爬取豆瓣电影影评数据Python版

    在 使用爬虫爬取豆瓣电影影评数据Java版 一文中已详细讲解了爬虫的实现细节,本篇仅为展示Python版本爬虫实现,所以直接上代码 完整代码 爬虫主程序 # 爬虫启动入口 from C02.data ...

  4. 龙岭迷窟真的这么好看?今天我们就用 Java 爬取豆瓣数据好好分析一下!

    每天早上七点三十,准时推送干货 首图来自最近热播的『鬼吹灯之龙岭迷窟』,看过上一部『鬼吹灯之怒晴湘西』同学应该能看懂这个笑点.潘粤明老师上一部还是卸岭魁首陈玉楼,这一部摇身一变成了胡八一. 好了,不扯 ...

  5. [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息

    这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...

  6. python爬取豆瓣电影top250_Python爬虫 - scrapy - 爬取豆瓣电影TOP250

    0.前言 新接触爬虫,经过一段时间的实践,写了几个简单爬虫,爬取豆瓣电影的爬虫例子网上有很多,但都很简单,大部分只介绍了请求页面和解析部分,对于新手而言,我希望能够有一个比较全面的实例.所以找了很多实 ...

  7. day02:requests爬取豆瓣电影信息

    一.requests爬取豆瓣电影信息 -请求url: https://movie.douban.com/top250 -请求方式: get -请求头: user-agent cookies二.sele ...

  8. python爬取音乐_Python现学现用xpath爬取豆瓣音乐

    昨天说了Requests库,今天来上手爬虫了. 爬虫的抓取方式有好几种,正则表达式,Lxml(xpath)与BeautifulSoup,我在网上查了一下资料,了解到三者之间的使用难度与性能 三种爬虫方 ...

  9. python爬虫豆瓣top250_Python 爬取豆瓣TOP250实战

    学习爬虫之路,必经的一个小项目就是爬取豆瓣的TOP250了,首先我们进入TOP250的界面看看. 可以看到每部电影都有比较全面的简介.其中包括电影名.导演.评分等. 接下来,我们就爬取这些数据,并将这 ...

最新文章

  1. 分析方法升级三代测序辅助,优化无参转录组测序策略
  2. linux 查看libevent 安装目录,linux下libevent安装配置与简介 以及 linux库文件搜索路径的配置...
  3. I.MX6 Android busybox 从哪里生成的
  4. RHEL 6.6安装桌面环境GNOME
  5. MicroStation V8i简体中文版完全补丁安装教程(附安装包下载)
  6. 双向循环链表的插入与删除
  7. Python 打包工具cx_freeze 问题记录及解决办法
  8. Ubuntu16.04 jsoncpp 的安装
  9. sap 打印预览界面点击打印时记录打印次数_9个Excel打印神技巧!从此打印不求人!...
  10. 新xp系统如何链接网络连接服务器地址,xp系统如何设置宽带连接
  11. c语言鸡兔同笼的程序,C语言:鸡兔同笼问题
  12. WPF如何实现跨线程更新UI控件
  13. 涨握在线|欧或重启QE;英市港市合并!
  14. RxJava 沉思录(一):你认为 RxJava 真的好用吗?
  15. Chrome 插件配置
  16. 计算机思维在绘画方面的应用,运用电脑绘画培养学生创新思维能力
  17. 日语输入法使用技巧!
  18. Java多线程:synchronized | Volatile 和Lock和ReadWriteLock多方位剖析(一)
  19. 【html】svg标签
  20. dart和C语言计算CRC32结果不同

热门文章

  1. ENSP 静态路由加VLANIF实例
  2. 税票贷产品的准入与额度判断有哪些逻辑
  3. c语言深度解剖-关键字
  4. 读《我的世界观》_爱因斯坦
  5. uni-app中使用Towxml 3.0,小程序完美支持Markdown
  6. 分箱_best-ks分箱
  7. 嵌入式软件设计第8次实验报告
  8. 那些停课的日子 by yjjr
  9. linux远程查看其他电脑配置,配置Linux系统的网络,以便于其他电脑远程操作服务器!...
  10. 光模块和光纤收发器相比,它的优势是什么?