本次是萌新爬虫的第三弹,这回咱整个好活——
爬取B站弹幕!!!
因为本人也是高纯度萌新,涉及到的很多模块和方法都是高人指点的(生活不易菜鸡叹气)
网址如下:https://www.bilibili.com
看到眼花缭乱的弹幕很想统统爪巴下来是吧?
别着急,且听下回分解(错乱)
1.导入模块
#爬取B站弹幕
import bs4
import pandas
import re
import requests
2.保存文件
file_name="越共探头.txt"#弹幕保存文件
3.获取页面
当打开一个B站视频,按下F12后进入网络,在其一系列数目庞杂的数据报文中有一类所谓“心跳包”的heartbeat需要引人注意:
点击标头进入其中,发现参数cid,这就是一个突破点——
因为弹幕存储在相应参数的.xml网页中!
以上就是我们需要的目标url
#获取页面
cid=410337606
url="https://comment.bilibili.com/"+str(cid)+".xml"
headers={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"}
request=requests.get(url=url, headers=headers)
request.encoding="utf-8"
4.提取弹幕
#提取弹幕
soup=bs4.BeautifulSoup(request.text,"lxml")
results=soup.find_all("d")
5.数据处理
#数据处理
data=[data.text for data in results]
for i in data:#正则去掉多余的空格和换行
i=re.sub("\s+"," ",i)
6.查看数量
#查看数量
print("弹幕数量为{}".format(len(data)))
7.输出文件
#输出文件
df=pandas.DataFrame(data)
df.to_csv(file_name,index=False,header=None,encoding="utf_8_sig")
print("保存成功")
8.完整代码
#爬取B站弹幕
import bs4
import pandas
import re
import requests
file_name="越共探头.txt"#弹幕保存文件
#获取页面
cid=410337606
url="https://comment.bilibili.com/"+str(cid)+".xml"
headers={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"}
request=requests.get(url=url, headers=headers)
request.encoding="utf-8"
#提取弹幕
soup=bs4.BeautifulSoup(request.text,"lxml")
results=soup.find_all("d")
#数据处理
data=[data.text for data in results]
for i in data:#正则去掉多余的空格和换行
i=re.sub("\s+"," ",i)
#查看数量
print("弹幕数量为{}".format(len(data)))
#输出文件
df=pandas.DataFrame(data)
df.to_csv(file_name,index=False,header=None,encoding="utf_8_sig")
print("保存成功")
9.部分结果展示
2
1
2
我记得狼群里是拿打火机烧,说直接拔掉可能会让蚂蟥的口器留在皮肤上感染
1
当时中国去缅甸的远征军觉得很淦
55555555
3
《铀刃》
111
3
2
1111111
1
55555555
《小牙签》
还可以用烟头烫,用盐腌
《不知名萨姆防空部队》
《 完 的 开 心 》
55555555
1
111
硬核地下
旅长:想不到吧?这里也有我
1
5555555
已经三连
给群友送鲜橙多.jpg
防空树!
3