突然想到了这个题目,先开了题,看能不能一次搞定,#后记,花了两天时间搞定的,一直想用自己的方法爬,但是效果都不好

首先去分析一下bilibili的网站请求,但是弹幕的异步传输的包抓不到(或者隐藏的好,或者是我技术水平有限),然后网上比较一致的看法是在JS里暴露了一个弹幕xml文件的id,然后用一个新的请求把xml文件下载下来,然后分析。

大体思路是:用avid去拿到cid,cid获取到弹幕文件,解析弹幕文件,生成云图

搞了两天,先把代码扔上来

from selenium import webdriver
from bs4 import BeautifulSoup
import re
from wordcloud import WordCloud
from scipy.misc import imread
import matplotlib.pyplot as plt driver=webdriver.PhantomJS()
driver.get('http://www.bilibili.com/video/av15719999/') #用的是selenium和webdriver,试过用requests库的get方法,不成功
soup = BeautifulSoup(driver.page_source,'lxml') #把返回的html解析出来 sc = soup.find('script',text=re.compile("EmbedPlayer*"))#找到有特定词‘EmbedPlayer’的script标签
sc1 =str(sc) #截取cid的值
a = sc1.find('cid=');
b = sc1.find('&');
sc2=sc1[a+4:b]
# print(sc2)
driver.get("http://comment.bilibili.com/"+sc2+".xml") #这个是重点,通过刚才拿到的cid去把弹幕的xml文件拿下来
soupxml = BeautifulSoup(driver.page_source,'lxml')
ds =soupxml.find_all('d')#拿到所有的弹幕节点
cuttext =''
for d in ds:
cuttext = cuttext+' '+str(d.text);#使用一个字符串把文件串起来
#print(cuttext)
#初始化词云
color_mask = imread("425176.jpg") # 读取背景图片
cloud = WordCloud(
# 设置字体,不指定就会出现乱码,这个文件是字体文件,可以去网上下载一个,然后写上路径
font_path="SourceHanSerif-Heavy.ttc",
# 设置背景色
background_color='white',
# 词云形状,就是刚才读取的背景图片
mask=color_mask,
# 允许最大词汇,出os报错的时候可能就是这个设置过大了
max_words=100,
# 最大号字体,出os报错的时候可能就是这个设置过大了
# max_font_size=40
)
word_cloud = cloud.generate_from_text(cuttext) # 产生词云
word_cloud.to_file("3.png") # 保存图片
# 显示词云图片
plt.imshow(word_cloud)
plt.axis('off')
plt.show()

不嫌弃的话可以访问我的个人主页,已经把功能集成到上边去了。在Funs功能列表中

http://1163949417-jack.55555.io/west/main/

python爬虫实战之bilibili弹幕生成云图的更多相关文章

  1. Python爬虫实战(4):豆瓣小组话题数据采集—动态网页

    1, 引言 注释:上一篇<Python爬虫实战(3):安居客房产经纪人信息采集>,访问的网页是静态网页,有朋友模仿那个实战来采集动态加载豆瓣小组的网页,结果不成功.本篇是针对动态网页的数据 ...

  2. Python爬虫实战(2):爬取京东商品列表

    1,引言 在上一篇<Python爬虫实战:爬取Drupal论坛帖子列表>,爬取了一个用Drupal做的论坛,是静态页面,抓取比较容易,即使直接解析html源文件都可以抓取到需要的内容.相反 ...

  3. 【图文详解】python爬虫实战——5分钟做个图片自动下载器

    python爬虫实战——图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识,(没看的先去看!!)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap sho ...

  4. Python爬虫实战四之抓取淘宝MM照片

    原文:Python爬虫实战四之抓取淘宝MM照片其实还有好多,大家可以看 Python爬虫学习系列教程 福利啊福利,本次为大家带来的项目是抓取淘宝MM照片并保存起来,大家有没有很激动呢? 本篇目标 1. ...

  5. Python爬虫实战---抓取图书馆借阅信息

    Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...

  6. Python爬虫实战七之计算大学本学期绩点

    大家好,本次为大家带来的项目是计算大学本学期绩点.首先说明的是,博主来自山东大学,有属于个人的学生成绩管理系统,需要学号密码才可以登录,不过可能广大读者没有这个学号密码,不能实际进行操作,所以最主要的 ...

  7. Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺

    更新 其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关评论,含有非匿名旺旺号,快一年了淘宝都没有修复这个. 可就在今天,淘宝把所有的账号设置成了匿名显示,SO,获取非匿名旺旺号已经 ...

  8. Python爬虫实战六之抓取爱问知识人问题并保存至数据库

    大家好,本次为大家带来的是抓取爱问知识人的问题并将问题和答案保存到数据库的方法,涉及的内容包括: Urllib的用法及异常处理 Beautiful Soup的简单应用 MySQLdb的基础用法 正则表 ...

  9. Python爬虫实战五之模拟登录淘宝并获取所有订单

    经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分享,希望大家支持. 温馨提示 更新时间,2016-02-01,现在淘宝换成了滑块验证了 ...

随机推荐

  1. node的 node-sass@^4.11.0 出现:npm: no such file or directory, scandir '.../node_modules/node-sass/vendor'

    解决办法: 查看node_modules文件夹,发现,并无vender 文件夹.如下图: 2.  在 node_modules/node-sass 下创建 vendor 文件夹 3.  最后运行: n ...

  2. Mac OS下Appium环境搭建及Genymotion模拟器安装

    说明:本机Mac本上已经安装的有:Python3.JDK.Node.js. Selenium Appium环境搭建 Step1:安装Appium Python Client库 1,命令:pip ins ...

  3. linux 开机报错,error grub_efi_find_mmap_size not find

    开机报错,差点以为要重装系统了 搜到了官方的重建引导的教程 修复了错误 https://wiki.manjaro.org/index.php/Restore_the_GRUB_Bootloader#F ...

  4. FFT(快速傅里叶变换)算法详解

    多项式的点值表示(Point Value Representation) 设多项式的系数表示(Coefficient Representation): \[ \begin{align*} \mathr ...

  5. 深度学习中数据的augmentation

    为了提高模型的泛化能力,同时也为了增大数据集,我们往往需要对数据进行augmentation,在这篇博客中,将总结一下可以对数据进行的augmentation. 1.颜色数据增强,对图像亮度.饱和度. ...

  6. OpenCV-Python(1)在Python中使用OpenCV进行人脸检测

    OpenCV是如今最流行的计算机视觉库,而我们今天就是要学习如何安装使用OpenCV,以及如何去访问我们的摄像头.然后我们一起来看看写一个人脸检测程序是如何地简单,简单到只需要几行代码. 在开始之前, ...

  7. CocoaPods did not set the base configuration of your project because your project already has a custom config set.

    今天在封装自己的消息推送SDK的时候,pod install 的时候,突然报这个错误,解决方式如下: $ pod install Analyzing dependencies Downloading ...

  8. iOS 模块化、组件化方案探索(利用cocoapods 、git 创建私有仓库)

    来自bang's blog http://blog.cnbang.net/tech/3080/ 模块化 简单来说,模块化就是将一个程序按照其功能做拆分,分成相互独立的模块,以便于每个模块只包含与其功能 ...

  9. mybatis之insert语句报错Cause: java.sql.SQLException: sql injection violation, syntax error: ERROR. token : WHERE,

    报错日志:org.springframework.jdbc.UncategorizedSQLException: Error updating database. Cause: java.sql.SQ ...

  10. Scrum Meeting 10.22

    Scrum Meeting No.2 今天的主要任务是配置安卓开发环境,并运行上一届的项目. 主流的安卓开发环境有eclipse+ADT+SDK和android studio两种.两种环境的文件架构似 ...