【豆瓣电影爬虫】2019/11/21/Python豆瓣电影爬虫+D3.js WordCloud

1.目标

今天临时需要将100部票房最高的电影【from艺恩网:如图1】,找到对应的豆瓣评分,制作D3词云图(因为只需要图片其实Python画超快,只是D3画是矢量图,放大缩小都不会不清晰),本来以为很快就搞定了,后来发现豆瓣爬虫先有了问题。
图1.内地票房
处理后获得初步数据
对票房数据做了处理适合生成词云图

2.豆瓣API利用(花时间最长的步骤)

发现很多官方API都挂了,很久找到一个可以用的,但是不能直接搜索q(详细的名字),只能查tag(不精确)。

basic_url = "https://movie.douban.com/j/search_subjects?type=movie&tag={}&page_limit=50&page_start=0&tdsourcetag=s_pcqq_aiomsg&qq-pf-to=pcqq.c2c"

tag的{}里是填想要搜索的电影名字,如果想搜索战狼
就是"https://movie.douban.com/j/search_subjects?type=movie&tag=我和我的祖国&page_limit=50&page_start=0&tdsourcetag=s_pcqq_aiomsg&qq-pf-to=pcqq.c2c"

返回的这个东西【图2】,通过requests和beautifulsoup解析后得到的不是里面是列表的字典,他是个字符串。。。。一定要注意

{"subjects":[{"rate":"","cover_x":749,"title":"战狼3","url":"https:\/\/movie.douban.com\/subject\/26665255\/","playable":false,"cover":"https://img1.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2495511299.jpg","id":"26665255","cover_y":999,"is_new":false},{"rate":"7.1","cover_x":1024,"title":"战狼2","url":"https:\/\/movie.douban.com\/subject\/26363254\/","playable":true,"cover":"https://img3.doubanio.com\/view\/photo\/s_ratio_poster\/public\/p2494701965.jpg","id":"26363254","cover_y":1548,"is_new":false}]}

需要用下面代码解析成正常的列表形式待用:

 html_list = s.split('},{')  # 将html页面中的每一个条目提取为列表的一个元素。# 定义正则,目的是从html中提取想要的信息(根据title提取id)str_title = '"title":"' + data[url]["text"] + '"'  ##匹配movienamepattern_title = re.compile(str_title)str_id = '"rate":"' + '[0-9]*' +'.[0-9]' ##匹配评分pattern_id = re.compile(str_id)id_list = []  # 评分存放列表for l in html_list:  # 遍历html_listfind_results_title = re.findall(pattern_title, l, flags=0)  # 找到匹配该剧name的条目itemif find_results_title != []:  # 如果有title=name的条目,即如果有匹配的结果find_results_id = re.findall(pattern_id, l, flags=0)  id_list.append(find_results_id[-3:])  ## id_list标准列表格式id_list = str(id_list).replace('[', '').replace(']', '').replace("'", '').replace('"id":"', '').replace(' ', '')id_list = id_list.split(',')if id_list[0]=="":data[url]["rate"]=1121#data是上面那个最前面已经获得票房数据的data,往里面加一项豆瓣评分,url为当前循环所在的下标#可能查询不到,就随便存一个固定值提醒自己这个没查到需要最后手工填上else:data[url]["rate"] = eval(id_list[0][-3:])

得到这个结果:打印出url,解析网页得到的信息,得到的评分
一般url得到的结果可能会没有,可能有多个,还需要自己匹配下
数据基本上搞定了

3.D3.js词云

时间关系,画个最简单的,这个基本上用v3版本比较简单。

票房前100的电影的票房词云图:
D3版本

用echarts也画了一版本,的确缩放没有D3清晰,但一般动态的我更喜欢用echarts:
echarts版本

top100的评分词云图:
D3版本

不是很难的小实验,花了一下午时间,反思记录一下!
最大的收获,对豆瓣爬虫有了新的概念
当然,每个电影对应豆瓣里一个ID,也可以通过ID来解析相应电影网页。

----2019/11/21 22:27 EchoZhang于北京-------------------------------

【豆瓣电影】2019/11/21/Python搜索豆瓣电影(Top100)爬虫+D3.js词云(票房和豆瓣评分)实现相关推荐

  1. python中词云pic_path是什么_自学Python笔记:打造我的第一个词云

    原标题:自学Python笔记:打造我的第一个词云 两会词云 "词云"是对文本中出现频率较高的"关键词"予以视觉上的突出,形成"关键词云层"或 ...

  2. 用Python爬取B站弹幕并做成词云

    用Python爬取B站弹幕并做成词云 一.获取视频的cid号 1.进入想爬的视频,打开浏览器设置里的"开发者工具": 进入NetWork后等待requests刷出,数据够了后可随意 ...

  3. python应用学习(四)——wordcloud生成词云

    python应用学习(四)--wordcloud生成词云 前言 一.准备 二.导入库 三.基本功能实现 四.爬取书评并制作词云 最后 前言 朋友最近在公众号发一些好书好剧推荐,然后我想着帮帮忙,做一个 ...

  4. MongoDB 实战(一)基于PyMongo的电影影评分析 | 对数据结果进行可视化展示以及分析 | 评论词云 | 分时间段分析

    文章目录 一.运行环境 二.实战介绍 三.获取数据 四.PyMongo 实战 4.1 连接MongoDB.创建集合 4.2 向 MongoDB 插入文档 4.3 查询MongoDB的数据 4.4 同样 ...

  5. python snownlp情感分析_SnowNLP情感分析+生成词云

    本帖最后由 missy 于 2017-12-9 00:12 编辑 因为最近看了一下<致我们单纯的小美好>,虽然情节是有点"二"吧,但是看了觉得真的很怀念初高中的日子,一 ...

  6. python爬取QQ空间说说并生成词云

    以下是生成的词云图  我的环境:Mac,Anaconda,Python2.7,以及各种用到的Python库 先来说下Anaconda Anaconda 是一个可用于科学计算的 Python 发行版,支 ...

  7. 看看你爱的他今天是什么‘颜色‘ -- Python爬取微博评论制作专属偶像词云

    简介:快来拿出你珍藏的pick star,用大家对他的爱重塑一个他吧.通过爬取微博评论,制作你的偶像图片词云,天天都是不重样的哦! 很多人学习python,不知道从何学起. 很多人学习python,掌 ...

  8. 12星座都是什么性格?(python爬虫+jieba分词+词云)

    12星座都是什么性格,大数据告诉你! 下面是利用python爬取12星座性格相关的微博,产生的12星座性格特征词云!白羊座为例,其他的在最后. 上代码(以白羊座为例): 1.微博数据爬取(需要sele ...

  9. python课程设计,学了python后你可以做的案例(词云,折线图,饼图…)

    目录 第一章 任务描述 1.1背景和意义 1.1.1背景: 1.2目标 第二章python开发环境的构建 2.1准备工作 2.1.1所需软件 第三章 用到的网络知识 第四章 源码 第一章 任务描述   ...

最新文章

  1. 从YARN迁移到k8s,滴滴机器学习平台二次开发是这样做的
  2. 学生科技周的讲座-2021-内容准备
  3. js表格中将每行的两个数据求和显示_python数据分析相关【一】
  4. 在Angular应用的child Component里同时使用@Input和@Output
  5. sessionattribute 被spring 扫描不到_Spring 系列之 Spring 常用注解总结(肝硬化的干货)...
  6. iOS NSUserDefaults 存放位置
  7. Atitit 压缩文件zip总结 注意孔目录 以及 递归目录 /springbootUpload/src/springbootUploadPkg/ZipUtilCompressPart.java
  8. Cisco VPP fib.h中文对照
  9. php判断电脑还是手机浏览器打开网页,PHP函数判断电脑端浏览器访问访问还是手机端浏览器访问...
  10. java中怎么判断字符串的长度_java怎么判断字符串的字符串的长度
  11. android:style/theme.holo.light,Galaxy Nexus上的Android Theme.Holo.Light在模拟器没有的时候有灰色背景...
  12. Date Wed Mar 17 2021 13:52:00 GMT+0800 (中国标准时间) 转标准的日期格式
  13. Python绘制动态图形
  14. laravel 浏览器谷歌network返回报错html
  15. 61、弱电工程数据中心的网络架构及其设计思路
  16. Ubuntu 22 04 LTS gcc 安装失败
  17. 墨画子卿第一章第3节:挑衅
  18. 开学后,高一高二的分班考该如何准备?
  19. Corechips SL2.2S USB2.0 4口 Hub 集成电路
  20. 基于51单片机的电压采集(ADC0804)

热门文章

  1. Java时间戳:Instant
  2. NLP以赛代练 Task 2:数据读取与分析
  3. 常见测试用例的设计方法
  4. notePad++对sql语句美化显示
  5. Cocos Creator 入门篇-描摹小游戏(cocos描摹数字,描摹英语字母,描摹图形)
  6. java 微信 摇一摇红包_微信春节放大招:摇一摇送5亿现金红包
  7. 平平无奇的语音助手(二)——小可同学语音助手
  8. JS字符串拼接/连接(3种方式)
  9. 华为鸿蒙系统p40多久能用,华为P40或用鸿蒙 华为鸿蒙系统好用吗什么时候能用华为P40发售时间...
  10. Spket 破解方法很好的javascript脚本编译器