这篇文章主要讲解了“如何使用python爬虫抓取弹幕”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用python爬虫抓取弹幕”吧!
百度百科这样说:自动获取网页内容的程序。在我理解看来,爬虫就是~~“在网络上爬来爬去的…”住口!~~
那么接下来就让我们看看如何养搬运B站弹幕的“虫”吧
首先,得知道爬取的网站url是什么。对于B站弹幕而言,弹幕所在位置是有固定格式的:
http://comment.bilibili.com/+cid+.xml
ok,那么问题来了,cid是什么呢?不用管是什么,我告诉你怎么获取。
1.打开视频后点击F12,切换到“网络”,在筛选器处填入“cid”进行筛选。
2.点击筛选出的网络信息,在右端Payload处找到cid
3.到此,我们就知道了何同学视频弹幕的网络链接:
http://comment.bilibili.com/499893135.xml
4.接着就是发送网络请求,获取网络页面资源。Python有很多发送网络请求的库。比如:
urllib库
requests库
我们用reaquests库演示
发送请求的代码如下
(示例):
#【何同学】我用108天开了个灯......视频的cid:499893135
#弹幕所在地
url = "http://comment.bilibili.com/499893135.xml"
#发送请求
req = requests.get(url = url)
#获取内容响应的内容
html_byte = req.content
#将byte转为str
html_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转为str
html_str = str(html_byte,"utf-8")
html_str是html文件的格式,我们需要对其进行处理,来获取我们想要的信息。这个时候,BeautifulSoup库就要闪亮登场了,我们用它来处理得到的html文件
代码如下(示例):
#解析
soup = BeautifulSoup(html,'html.parser')
#找到html文件里的<d>标签
results = soup.find_all('d')
#把标签里的文本提取出来
contents = [x.text for x in results]
#存为字典
dic ={"contents" : contents}
contents就是弹幕字符串列表了,存成字典是为了下一步…
把弹幕信息存储成excel,也有好多库可以用。比如:
xlwt库
pandas库
我们就用pandas库把
代码如下(示例):
把用第二步得到的字典创建dataFrame,然后用pandas库的一个API存下就行了
#用字典创建了一个电子表格
df = pd.DataFrame(dic)
df["contents"].to_excel('htx.xlsx')
import requests
from bs4 import BeautifulSoup
import 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()
感谢各位的阅读,以上就是“如何使用python爬虫抓取弹幕”的内容了,经过本文的学习后,相信大家对如何使用python爬虫抓取弹幕这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。