CSIC_716_20191028【爬小破站】
1、爬取小破站的弹幕
2、展示爬取内容
打开网页,用教的方法找到cid 和header
import requests
from bs4 import BeautufulSoup
import pandas as pd
import re
header={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
}#小破站的header可以通过谷歌浏览器的network中的request header获取
url=' http://comment.破站.com/125507930.xml' #以爬取小破站cid=125507930为例
response=request.get(headers=header,url=url) #获取响应
response.encoding=response.apparent_encoding
data=response.text
soup=BeautifulSoup(data,'lxml' )#解析
dlist=soup.find_all('d') #将内容按照规律向需要获取的内容筛选靠拢,存入dlist
d_list=[ ]
for i in d_list
danmu{ }
danmu['弹幕']=i.text
d_list.append(danmu) #将取到的值放到d_list中
df=pd.dateframe(d_list) #df应该还是列表,pd是pandas
f.open('sign.txt','encoding='utf-8')
for p in danmu['danmu'].value:
pat=re.compile(r'[一-龥]+')
filter_data=re.findall(pattern=pat,string=p )#筛选
f.write( " ".join(filter_data)) #保存数据进入sign文件
f.close()
------------------------------------------------------------------------------------------------------------------------------------------------------
利用上面获得的文件 sign.txt进行展示
import jieba
from imageio import imread
from wordcloud import WordCloud
f.open('sign.txt ',encoding='utf-8' )
data=f.read()
result=" ".join(jieba.lcut(data))
f.close( )
mask_color=imread('XXXX.jpg')
wc=WordCloud(
font_path='font的路径',
mask=mask_color,
width=xx,
height=xx,
)
wc.generate(result)
wc.to_file('xxxx.png')
plt.imshow( wc)
plt.show()
----------------------------------------------------以下为正式代码将两者合并--------------------------------------------------------------------------------------------------
如果不生成中间文件,爬完网页直接生成图片,代码合并,如下所示
#coding:utf-8
import requests
import jieba
import pandas as pd
import re
import matplotlib.pyplot as plt
from bs4 import BeautifulSoup
from imageio import imread
from wordcloud import WordCloud
header={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
}
url='http://comment.bilibili.com/122593266.xml' #换一下数字的cid即可
response = requests.get(url=url,headers=header)
response.encoding=response.apparent_encoding
data=response.text
suop=BeautifulSoup(data,'lxml')
list_filter=suop.find_all('d')
plist=[]
for i in list_filter:
danmu={}
danmu['弹幕']= i.text
plist.append(danmu)
df=pd.DataFrame(plist)
reslist=[]
for p in df['弹幕'].values:
txtfilter= re.compile(r'[一-龥]+')
res=re.findall(pattern=txtfilter,string=p)
result = " ".join(res)
reslist.append(result)
result= " ".join(reslist)
finalResult=" ".join(jieba.lcut(result))
mask_color=imread('五角星.jpg') #图片可以随意替换,放在project中即可
wc=WordCloud(
font_path=r'C:\Windows\Fonts\STLITI.TTF',
mask=mask_color,
width=1920,
height=1080,
background_color='white'
)
wc.generate(finalResult)
wc.to_file('hunt.png')
plt.imshow(wc)
plt.show( )
CSIC_716_20191028【爬小破站】的更多相关文章
- Typecho部署小破站
写在前面 以前利用 Github Page + Hexo框架 + Next主题搭建过静态博客,没错就是那个黑白色系的网页!但是体验并不是很好,一来本身是静态网页,页面内容要修改都需要在本地修改完上传到 ...
- 爬虫---爬取b站小视频
前面通过python爬虫爬取过图片,文字,今天我们一起爬取下b站的小视频,其实呢,测试过程中需要用到视频文件,找了几个网站下载,都需要会员什么的,直接写一篇爬虫爬取视频~~~ 分析b站小视频 1.进入 ...
- 萌新学习Python爬取B站弹幕+R语言分词demo说明
代码地址如下:http://www.demodashi.com/demo/11578.html 一.写在前面 之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这样 ...
- 爬虫练习四:爬取b站番剧字幕
由于个人经常在空闲时间在b站看些小视频欢乐一下,这次就想到了爬取b站视频的弹幕. 这里就以番剧<我的妹妹不可能那么可爱>第一季为例,抓取这一番剧每一话对应的弹幕. 1. 分析页面 这部番剧 ...
- Python 网络爬虫实战:爬取 B站《全职高手》20万条评论数据
本周我们的目标是:B站(哔哩哔哩弹幕网 https://www.bilibili.com )视频评论数据. 我们都知道,B站有很多号称“镇站之宝”的视频,拥有着数量极其恐怖的评论和弹幕.所以这次我们的 ...
- 用Python爬取B站、腾讯视频、爱奇艺和芒果TV视频弹幕!
众所周知,弹幕,即在网络上观看视频时弹出的评论性字幕.不知道大家看视频的时候会不会点开弹幕,于我而言,弹幕是视频内容的良好补充,是一个组织良好的评论序列.通过分析弹幕,我们可以快速洞察广大观众对于视频 ...
- 从0实现python批量爬取p站插画
一.本文编写缘由 很久没有写过爬虫,已经忘得差不多了.以爬取p站图片为着手点,进行爬虫复习与实践. 欢迎学习Python的小伙伴可以加我扣群86七06七945,大家一起学习讨论 二.获取网页源码 爬取 ...
- Java爬取B站弹幕 —— Python云图Wordcloud生成弹幕词云
一 . Java爬取B站弹幕 弹幕的存储位置 如何通过B站视频AV号找到弹幕对应的xml文件号 首先爬取视频网页,将对应视频网页源码获得 就可以找到该视频的av号aid=8678034 还有弹幕序号, ...
- Web侦察工具HTTrack (爬取整站)
Web侦察工具HTTrack (爬取整站) HTTrack介绍 爬取整站的网页,用于离线浏览,减少与目标系统交互,HTTrack是一个免费的(GPL,自由软件)和易于使用的离线浏览器工具.它允许您从I ...
随机推荐
- Centos7下Firewalld防火墙配置命令
前 言 服务端口日常被拦截,记录一下常用的命令便于查询 Firewalld服务管理 查看防火墙状态 1 systemctl status firewalld 开机启用/禁用防火墙 1 s ...
- Swift结构体和类
Swift结构体 在Swift标准中,绝大多数的公开的类型都是结构体,而枚举和类只占很小的一部分 比如Bool.Int.Double.String.Array.Dictionary等常见的类型都是结构 ...
- react-router v4 理解
1.Router (1)最基础的路由器,必须有history属性 (2)BrowserRouter和HashRouter都是由Router组件扩展而来 2.BrowserRouter (1)Brows ...
- yes - 不断输出一个字符串,直到杀死其为止
SYNOPSIS(总览) yes [OPTION]... [STRING]... DESCRIPTION(描述) 不断输出包括所有指定STRING(s)的一行,或者是`y'. --help 显示帮助并 ...
- 记录一次工作中jvm被linux杀死的调查
首先,以后碰到任何jvm的错误,先看日志!!!!!!!! web项目在tomcat目录下的log里,或者自己设定的errorfile目录下.总之,找到一切可以运用的日志,比如crash日志,cored ...
- Mybatis中$和#取数据的区别
Mybatis配置中,取出map入参的数据一般有两种方式#{key}和${key},下面是这两种取值的区别: 以同样的语句做对比: <select id="geUserByParam1 ...
- CAS -- ABA问题的解决方案
我们现在来说什么是ABA问题.假设内存中有一个值为A的变量,存储在地址V中. 此时有三个线程想使用CAS的方式更新这个变量的值,每个线程的执行时间有略微偏差.线程1和线程2已经获取当前值,线程3还未获 ...
- Vue.js 样式绑定(1)
demo <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...
- leetcode- 距离顺序排序矩阵单元格
C++解法: #include <iostream> #include <vector> #include <map> #include <algorithm ...
- 字符串hash+找模数——cf985F
19260817比自然溢出都要好使 /* 把原串变成用26个01串表示,第i个串对应的字符是i 然后进行字符串hash,s和t双射的条件是26个串的hash值排序后一一相等 */ #include&l ...