首先要爬取哔哩哔哩网站的数据 , 第一步就是要分析网页,找到网上ajax异步加载的数据 即json文件,找到后还要对其爬去,这里我选正则表达式爬去网页,其次是 对爬取的数据进行清洗,防止脏数据对生成的词云造成影响,将清洗完的的数据存入MongoDB数据库中最后是 利用woldcould这个库 对弹幕进行词频统计最后利用matplotlib库生成词云图片

blibli.pyimport requests
import json
import re
import pymongo
import numpy as np
import pandas as pd
from config import *# 连接mongo数据库
client = pymongo.MongoClient(MONGO_URL)
db = client[MONGO_DB]# 获取哔哩哔哩视屏排行榜
def get_page(i):url = "https://api.bilibili.com/pgc/season/index/result?season_version=-1&area=-1&is_finish=-1©right=-1&season_status=-1&season_month=-1&year=-1&style_id=-1&order=4&st=1&sort=0&page="+str(i)+"&season_type=1&pagesize=20&type=1"response = requests.get(url)response.encoding = 'UTF-8'return response.text# 解析网站得到对应的视屏链接
def parse_page_url(js):data = json.loads(js)if "data" in data:data = data.get('data')for item in data.get('list'):if item.get('badge') != "会员专享":yield item.get('link')# 利用正则抓取网页中需要的数据
def parse_page_detail(url):response = requests.get(url)response.encoding = 'UTF-8'content = response.text# print(content)# 从script中抓取数据pattern = re.compile('<h4>(.*?)</h4>.*?"mediaInfo".*?"stat":(.*?),"id".*?"title":"(.*?)","jpTitle".*?"epList":.*?"cid":(.*?),"from"',re.S)content_detail = re.search(pattern, content)# 解析json文件数据item = json.loads(content_detail.group(2))return {'标题': content_detail.group(3),'综合评分': content_detail.group(1),'播放次数': item.get('views'),'弹幕历史总数': item.get('danmakus'),'硬币': item.get('coins'),'弹幕': get_danmakus(content_detail.group(4))}# 由于弹幕数据是异步加载得到的这里是获取当天的评论数据
def get_danmakus(cid):url = "https://api.bilibili.com/x/v1/dm/list.so?oid=" + cidresponse = requests.get(url)response.encoding = 'UTF-8'danmaku = response.textpattern = re.compile('<d p.*?>(.*?)</d>', re.S)danmakus = re.findall(pattern, danmaku)return danmakus# 保存到数据库
def save_to_mongo(result):if db[MONGO_TABLE].insert(result):print('存储成功', result)return Truereturn Falseif __name__ == '__main__':# 获取9页视屏数据for i in range(1,10):js = get_page(i)for url in parse_page_url(js):save_to_mongo(parse_page_detail(url))


worldCloud.pyfrom wordcloud import WordCloud
import pymongo
from config import *
import matplotlib.pyplot as plt# 连接mongo数据库  False是因为多进程下频繁的连接会报错
client = pymongo.MongoClient(MONGO_URL)
db = client[MONGO_DB]#从数据库中读取文件
def read_from_mongoDB(title):#设置读取的列field = {'标题': True, '综合评分': True, '播放次数': True, '弹幕历史总数': True, '硬币': True, '弹幕': True}content=db[MONGO_TABLE].find({"标题":title},projection=field)return content# 生成词云
def show_woldCould(content):for item in content:title = item.get('标题')# 将列表拼接字符串text = " ".join(item.get('弹幕'))# 系统字体font = '/usr/share/fonts/opentype/noto/NotoSerifCJK-SemiBold.ttc'wc = WordCloud(collocations=False, font_path=font, width=1000, height=700, margin=2).generate(text)# 画图plt.imshow(wc)plt.axis("off")plt.show()url='./image/{0}.png'.format(title)print(url)# 把词云保存下来wc.to_file(url)if __name__ == '__main__':title = input("请输入要生成词云的标题:")show_woldCould(read_from_mongoDB(title))

python爬取哔哩哔哩网站数据以及弹幕相关推荐

  1. Python爬取2万条相亲网站数据!看看中国单身男女都在挑什么!

    想必昨天的七夕节,一定是有人欢喜有人忧的一天,朋友圈里的晒照惹恼了我的一个程序员朋友,在昨晚怒爬2万条相亲网站数据,做了一次相亲男女画像! 话不多说,我们今天就以"世纪佳缘"这个相 ...

  2. 深夜,我用python爬取了整个斗图网站,不服来斗

    深夜,我用python爬取了整个斗图网站,不服来斗 QQ.微信斗图总是斗不过,索性直接来爬斗图网,我有整个网站的图,不服来斗. 废话不多说,选取的网站为斗图啦,我们先简单来看一下网站的结构 网页信息 ...

  3. 利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息

    新增:国外疫情网站介绍 已更新:爬取国外疫情数据 已更新:新型肺炎历史数据下载 2020年3月27日补充: 制作了一个全球肺炎数据查询下载网站,效果如下: 访问地址:http://119.3.227. ...

  4. python爬取分析超级大乐透历史开奖数据

    python爬取分析超级大乐透历史开奖数据 博主作为爬虫初学者,本次使用了requests和beautifulsoup库进行数据的爬取 爬取网站:http://datachart.500.com/dl ...

  5. python爬取链家网的房屋数据

    python爬取链家网的房屋数据 爬取内容 爬取源网站 爬取内容 爬取思路 爬取的数据 代码 获取房屋url 获取房屋具体信息 爬取内容 爬取源网站 北京二手房 https://bj.lianjia. ...

  6. 利用Python爬取全国250m精度的人口数据

    此次以GeoQ(智图)为基础,利用Python爬取全国250m精度的人口数据(GeoQ)这个网站开放过250m精度的人口分布数据,而且人口分布有年龄分段等属性.先得注册登录到达创建地图的界面. 看人口 ...

  7. 利用Python爬取全国250m精度的人口数据(GeoQ)、房价数据和公交站(线路)等数据

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 中原百科 GIS大师兄 PS:如有需要Python学习资料的小伙伴可 ...

  8. 如何利用 C# 爬取带 Token 验证的网站数据?

    在对文本数据的情感分析中,基于情感词典的方法是最简单也是最常用的一种了. 它的大体思路如下: 对文档分词,找出文档中的情感词.否定词以及程度副词,然后判断每个情感词之前是否有否定词及程度副词,将它之前 ...

  9. Python 爬取 201865 条《隐秘的角落》弹幕,发现看剧不如爬山?

    作者 | 朱小五 责编 | 屠敏 封图 | CSDN 付费下载自东方 IC 最近又火了一部国产剧:<隐秘的角落>. 如果你没看过,那可能会对朋友圈里大家说的"一起去爬山" ...

  10. Python爬取王者荣耀英雄的皮肤数据并下载皮肤图片项目

    Python爬取王者荣耀英雄的皮肤数据,并下载皮肤图片!高清的图片用来做桌面也不错哟~ 网址:https://pvp.qq.com/web201605/herolist.shtml 1.获得英雄信息, ...

最新文章

  1. 基于 Dash Bio 的生物信息学数据可视化
  2. CKEditor+CKFinder配置学习
  3. Docker 使用 supervisord 管理 lumen队列与crontab
  4. 数列分块入门2(区间小于c的个数)
  5. 【转】QT中添加的资源文件qrc时的路径问题小结
  6. php 命名空间通俗易懂_PHP进阶由浅入深掌握面向对象开发
  7. eclipse 修改java代码不重启服务器 生效配置
  8. php mysql索引原理_加速PHP动态网站 关于MySQL索引分析优化
  9. 【Spring Cloud】注册中心-Nacos
  10. 波士顿动力新机器人登场!
  11. 求助!妹子一个rm -rf把公司服务器数据删没了,我该怎么办
  12. 拓端tecdat|在Amazon Web Services中使用R语言运行模拟
  13. mysql 触发器 insert new_mysql触发器实例 插入前更新数据
  14. 通达信 移动平均算法_中山证券通达信下载-中山证券通达信软件 v1.06 官方版
  15. 昆腾通过集成新的LTO-8磁带扩大在存储效率领域的领导地位
  16. 如何将Word转PDF?免费office转换PDF的方法
  17. 域名更换是什么意思?
  18. 用友系统中连接数据库服务器失败,用友u8服务器连接不到本地数据库
  19. 用Mailgun方式在Drone pipeline中集成SMTP邮件通知
  20. oracle查询某字段为空时,赋值为0

热门文章

  1. myAppointment OPA test case issue
  2. fedora 关闭 zram swap
  3. 鞘氨醇-1-磷酸——促进细胞生长
  4. java实训项目-模拟自动挡汽车
  5. 基于tauri打造的HTTP API客户端工具-CyberAPI
  6. 高并发高可用系统的常见应对策略 秒杀等-(阿里)
  7. [JVM]了断局: G1 入门
  8. Howler.js音频播放终极解决方案
  9. 科学计算机怎么玩游戏,计算机也能玩文本游戏
  10. 23西南大学电子信息专硕经验贴——常见问题