你会使用python爬虫抓取弹幕吗
目录
- 前言
- 一、爬虫是什么?
- 二、饲养步骤
- 1.请求弹幕
- 2.解析弹幕
- 3.存储弹幕
- 4.总代码
- 三、总结
前言 时隔108天,何同学在B站发布了最新的视频,《【何同学】我用108天开了个灯…》。那么就让我们用爬虫,爬取视频的弹幕,看看小伙伴们是怎么评价的吧
一、爬虫是什么? 【你会使用python爬虫抓取弹幕吗】百度百科这样说:自动获取网页内容的程序。在我理解看来,爬虫就是~~“在网络上爬来爬去的…”住口!~~
那么接下来就让我们看看如何养搬运B站弹幕的“虫”吧
二、饲养步骤
1.请求弹幕
首先,得知道爬取的网站url是什么。对于B站弹幕而言,弹幕所在位置是有固定格式的:
http://comment.bilibili.com/+cid+.xmlok,那么问题来了,cid是什么呢?不用管是什么,我告诉你怎么获取。
1.打开视频后点击F12,切换到“网络”,在筛选器处填入“cid”进行筛选。
文章图片
2.点击筛选出的网络信息,在右端Payload处找到cid
文章图片
3.到此,我们就知道了何同学视频弹幕的网络链接:
http://comment.bilibili.com/499893135.xml4.接着就是发送网络请求,获取网络页面资源。Python有很多发送网络请求的库。比如:
- urllib库
- requests库
发送请求的代码如下
(示例):
#【何同学】我用108天开了个灯......视频的cid:499893135#弹幕所在地url = "http://comment.bilibili.com/499893135.xml"#发送请求req = requests.get(url = url)#获取内容响应的内容html_byte = req.content#将byte转为strhtml_str = str(html_byte,"utf-8")
还有个值得提一下的地方是,发送请求的请求头可以加上,伪装自己是浏览器访问。可以通过header参数,加上user-agent,获取方式如下:
文章图片
那么,代码就是下面这样了:
#假装自己是浏览器header ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36 Edg/98.0.1108.43'}#【何同学】我用108天开了个灯......视频的cid:499893135#弹幕所在地url = "http://comment.bilibili.com/499893135.xml"#发送请求req = requests.get(url = url, headers=header)#获取内容响应的内容html_byte = req.content#将byte转为strhtml_str = str(html_byte,"utf-8")
2.解析弹幕
html_str是html文件的格式,我们需要对其进行处理,来获取我们想要的信息。这个时候,BeautifulSoup库就要闪亮登场了,我们用它来处理得到的html文件
代码如下(示例):
#解析soup = BeautifulSoup(html,'html.parser')#找到html文件里的标签results = soup.find_all('d')#把标签里的文本提取出来contents = [x.text for x in results]#存为字典dic ={"contents" : contents}
contents就是弹幕字符串列表了,存成字典是为了下一步…
3.存储弹幕
把弹幕信息存储成excel,也有好多库可以用。比如:
- xlwt库
- pandas库
代码如下(示例):
把用第二步得到的字典创建dataFrame,然后用pandas库的一个API存下就行了
#用字典创建了一个电子表格df = pd.DataFrame(dic)df["contents"].to_excel('htx.xlsx')
4.总代码
import requestsfrom bs4 import BeautifulSoupimport pandas as pd def main():html = askUrl()dic =analyse(html)writeExcel(dic) def askUrl():#假装自己是浏览器header ={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36 Edg/98.0.1108.43'}#【何同学】我用108天开了个灯......视频的cid:499893135#弹幕所在地url = "http://comment.bilibili.com/499893135.xml"req = requests.get(url = url, headers=header)html_byte = req.content#字节html_str = str(html_byte,"utf-8")return html_str def analyse(html):soup = BeautifulSoup(html,'html.parser')results = soup.find_all('d')#x.text表示要放到contents中的值contents = [x.text for x in results]#保存结果dic ={"contents" : contents}return dic def writeExcel(dic):#用字典创建了一个电子表格df = pd.DataFrame(dic)df["contents"].to_excel('htx.xlsx') if __name__ == '__main__':main()
三、总结 爬虫简单来说呢,就三步:
1.发送网络请求,获取资源
2.进行搜索等操作来获取有用信息
3.存储信息
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
推荐阅读
- python读取json数据还原表格批量转换成html
- 基于Python实现实时监控CPU使用率
- Linux如何使用shred命令(用法示例指南)
- MySQL如何使用存储过程(创建、列出、更改和删除)
- 什么是chroot jail以及如何使用它(详细指南)
- MySQL事件和事件调度程序指南(设置和使用)
- 如何使用WP-Optimize插件优化你的WordPress数据库()
- 怎么编辑PDF文件内容
- Android攻城狮使用SubMenu创建子菜单
- kubernetes|[问题已处理]-kubernetes使用hostpath在单节点上共享文件