脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - 你会使用python爬虫抓取弹幕吗

你会使用python爬虫抓取弹幕吗

2022-09-13 10:07璨星烁 Python

这篇文章主要为大家详细介绍了python爬虫抓取弹幕的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

前言

时隔108天,何同学在B站发布了最新的视频,《【何同学】我用108天开了个灯…》。那么就让我们用爬虫,爬取视频的弹幕,看看小伙伴们是怎么评价的吧

 

一、爬虫是什么?

百度百科这样说:自动获取网页内容的程序。在我理解看来,爬虫就是~~“在网络上爬来爬去的…”住口!~~
那么接下来就让我们看看如何养搬运B站弹幕的“虫”吧

 

二、饲养步骤

 

1.请求弹幕

首先,得知道爬取的网站url是什么。对于B站弹幕而言,弹幕所在位置是有固定格式的:

http://comment.bilibili.com/+cid+.xml

ok,那么问题来了,cid是什么呢?不用管是什么,我告诉你怎么获取。

1.打开视频后点击F12,切换到“网络”,在筛选器处填入“cid”进行筛选。

你会使用python爬虫抓取弹幕吗

2.点击筛选出的网络信息,在右端Payload处找到cid

你会使用python爬虫抓取弹幕吗

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,获取方式如下:

你会使用python爬虫抓取弹幕吗

那么,代码就是下面这样了:

#假装自己是浏览器
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")

 

2.解析弹幕

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就是弹幕字符串列表了,存成字典是为了下一步…

 

3.存储弹幕

把弹幕信息存储成excel,也有好多库可以用。比如:

  • xlwt库
  • pandas库

我们就用pandas库把

代码如下(示例):

把用第二步得到的字典创建dataFrame,然后用pandas库的一个API存下就行了

#用字典创建了一个电子表格
df = pd.DataFrame(dic)
df["contents"].to_excel("htx.xlsx")

 

4.总代码

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()
 

 

三、总结

爬虫简单来说呢,就三步:

1.发送网络请求,获取资源

2.进行搜索等操作来获取有用信息

3.存储信息

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注服务器之家的更多内容!

原文链接:https://blog.csdn.net/qq_48169012/article/details/122813998

延伸 · 阅读

精彩推荐
  • PythonPython实现Pig Latin小游戏实例代码

    Python实现Pig Latin小游戏实例代码

    这篇文章主要介绍了Python实现Pig Latin小游戏实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下...

    阿木寺10612021-01-11
  • PythonPython程序打包成可执行文件exe详解流程

    Python程序打包成可执行文件exe详解流程

    你是否也有希望过写一些自己所需要的工具程序来使用,可有不想或者没时间精力学别的语言,本篇文章教你如何将用python语言写的程序打包成可执行的...

    每日小新5022022-02-23
  • PythonPython 内存管理机制全面分析

    Python 内存管理机制全面分析

    这篇文章主要介绍了Python 内存管理机制全面分析,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下...

    风不再来6602021-08-26
  • Pythonpython如何实现远程控制电脑(结合微信)

    python如何实现远程控制电脑(结合微信)

    这篇文章主要介绍了python如何实现远程控制电脑,利用python设计了一个程序来实现自由管控,感兴趣的小伙伴们可以参考一下 ...

    xfk4942020-08-04
  • Python太漂亮了 ! 输出好看的表格,就用这个 Python 库!

    太漂亮了 ! 输出好看的表格,就用这个 Python 库!

    prettytable 库就是这么一个工具,prettytable 可以打印出美观的表格,并且对中文支持相当好(如果有试图自己实现打印表格,你就应该知道处理中文是多么的...

    菜鸟学Python4002022-01-07
  • Pythonpython实现A*寻路算法

    python实现A*寻路算法

    A*算法可以显示寻路图,两点之间寻找最短路径,本文使用Python实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    marble_xu6452021-11-30
  • Pythonpython实现多线程抓取知乎用户

    python实现多线程抓取知乎用户

    本文给大家分享的是如何使用Python实现多线程抓取知乎用户的思路以及代码,非常的详细,作者使用本程序成功抓取到了百万用户,有需要的小伙伴可以参...

    脚本之家3002020-09-14
  • Pythonpython处理csv数据的方法

    python处理csv数据的方法

    这篇文章主要介绍了python处理csv数据的方法,实例分析了Python处理csv数据的技巧,需要的朋友可以参考下 ...

    kirkversion14602019-11-27