在B站爬取坤坤的视频,并获取视频基本信息

这篇具有很好参考价值的文章主要介绍了在B站爬取坤坤的视频,并获取视频基本信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在B站有许多坤坤的视频,作为一名ikun,让我们写个爬虫研究一下视频的视频的名字、链接、观看次数、弹幕、发布时间以及作者。我们用selenium来实现这个爬虫,由于要获取的数据比较多,我们写几个函数来实现这个爬虫。

先倒入需要用到的库,包括selenium, time ,BeautifulSoup ,ChromeDriverManager。

打开及搜索函数:在这段代码中,我们导入了 `webdriver` 和 `ChromeDriverManager` 模块,以便使用 ChromeDriver 控制 Chrome 浏览器,以及自动下载和安装最新版本的 ChromeDriver。同时,我们还导入了 `time` 模块,以便在代码中添加延迟,以便页面加载完成。最后,我们还导入了 `BeautifulSoup` 模块,以便从网页中提取信息。

    from selenium import webdriver
    from webdriver_manager.chrome import ChromeDriverManager
    import time
    from bs4 import BeautifulSoup

先创建一个 ChromeDriver 实例,打开B站,在这里我们使用ChromeDriverManager().install()方法,他可以自动下载对应版本的chrome,防止因为Chrome版本不正确而报错。(PS:直接用webdriver.Chrome()会使用已下载Chrome游览器,他的版本可能与webdriver需要的版本不匹配这样打开chrome的时候会出现闪退报错)

    url="哔哩哔哩 (゜-゜)つロ 干杯~-bilibili"
    browser = webdriver.Chrome(ChromeDriverManager().install()) #创建一个 ChromeDriver 实例
    browser.set_window_size(1400, 900) #设定页面大小
    browser.get(url) #访问B站

我们可以用xpath方法来获取目标操作的位置,chrome浏览器能够自动提取xpath链接。我们使用 `browser.window_handles` 方法获取当前窗口中的所有句柄,并切换到第二个窗口,以便获取搜索结果页面。

在打开B站首页的时候,会出现一个提示登陆的页面干扰我们,因此我们最好点击一下首页,刷新一下。

    first_page = browser.find_element_by_xpath("//*[@id='i_cecream']/div[2]/div[1]/div[1]/ul[1]/li[1]/a/span") #取得首页按钮的的位置
    first_page.click() #点击首页进行刷新 

然后,我们模拟用户在网站上搜索蔡徐坤篮球相关的视频;点击搜索栏,输入"蔡徐坤 篮球",并进行搜索;最后定位到新页面。

    input = browser.find_element_by_xpath("//*[@id='nav-searchform']/div[1]/input") #取得搜索栏的位置
    input.send_keys('蔡徐坤 篮球') #输入内容
    submit = browser.find_element_by_xpath("//*[@id='nav-searchform']/div[2]") #取得搜索按钮的位置  
    submit.click() #点击搜索
    all_h = browser.window_handles #取得新页面的代码
    browser.switch_to.window(all_h[1]) #取得新页面的代码

打开及搜索函数的完整代码:

def search(url="哔哩哔哩 (゜-゜)つロ 干杯~-bilibili"):
    try:
        browser = webdriver.Chrome(ChromeDriverManager().install())
        browser.set_window_size(1400, 900)
        browser.get(url)
        first_page = browser.find_element_by_xpath("//*[@id='i_cecream']/div[2]/div[1]/div[1]/ul[1]/li[1]/a/span")
        first_page.click()
        input = browser.find_element_by_xpath("//*[@id='nav-searchform']/div[1]/input")
        input.send_keys('蔡徐坤 篮球')
        submit = browser.find_element_by_xpath("//*[@id='nav-searchform']/div[2]")
        submit.click()
        all_h = browser.window_handles
        browser.switch_to.window(all_h[1])
        return browser
    except TimeoutError:
        return search(url)

翻页函数:该函数使用 `find_element_by_xpath` 方法查找“下一页”按钮,并使用 `click` 方法单击该按钮。在单击“下一页”按钮之后,该函数使用 `browser.window_handles` 方法获取所有窗口句柄,并使用`browser.switch_to.window` 方法将焦点切换到搜索结果页面,以便我们可以继续提取视频信息,最后返回页面代码信息。如果没有找到“下一页”按钮,该函数会递归调用自身来查找“下一页”按钮,直到找到为止。

这里有一点需要注意,在取得下一页按钮的时候,最好利用“下一页”的文本进行匹配,如果根据浏览器提供的位置信息匹配,在某些页面下会出现位置不匹配而导致程序异常。

`next = browser.find_element_by_xpath("//button[text()='下一页']")

这段代码较为简单,直接给出完整代码。

    def next_page(browser): #获取下一页
      try:
          next = browser.find_element_by_xpath("//button[text()='下一页']") #下一页按钮
          next.click() #点击按钮
          time.sleep(1) #听一秒等待刷新
          all_h1 = browser.window_handles #取得新页面的代码
          browser.switch_to.window(all_h1[1]) #取得新页面的代码
          return browser 
      except:
          next_page(browser)

在这个函数中,我们首先使用 `browser.page_source` 方法获取当前页面的 HTML 代码,然后使用 `BeautifulSoup` 类解析 HTML 代码,以提取视频信息。接着,我们使用 `xlwt` 库将视频信息写入到 Excel 文件中。

我们还需要一个函数来提取页面信息,

先用BeautifulSoup解析页面,用find方法找到\<class\_='video-list'>标签,这里包含我们需要的所有视频,然后用find\_all方法找到每个视频的标签\<class\_='bili-video-card'>,同时find\_all会帮助我们形成一个列表存储数据,也就是我用到的videos:

    html = browser.page_source
    soup = BeautifulSoup(html, "lxml")
    videos = soup.find(class_='video-list').find_all(class_='bili-video-card')

遍历视频信息列表,提取信息(视频的名字、链接、观看次数、弹幕、发布时间以及作者),这里建议多尝试,多打印几次确保信息准确:

            for item in videos:
                item_readers = item.find("span", class_="bili-video-card__stats--item").span.string
                item_danmu = item.find_all("span", class_="bili-video-card__stats--item")[1].span.string
                item_time = item.find("span", class_="bili-video-card__stats__duration").string
                item_title = item.find("h3").get("title")
                item_author = item.find("span", class_="bili-video-card__info--author").string
                item_link = item.find("a").get("href")[2:]
                print(item_title)

最后一步是储存信息:

sheet.write(n, 0, n)

sheet.write(n, 1, item_title)

sheet.write(n, 2, item_link)

sheet.write(n, 3, item_readers)

sheet.write(n, 4, item_danmu)

sheet.write(n, 5, item_time)

sheet.write(n, 6, item_author)

获取信息和储存函数的完整代码:

    def save_to_excel(browser,sheet,n,wb):
        try:
            html = browser.page_source
            soup = BeautifulSoup(html, "lxml")
            videos = soup.find(class_='video-list').find_all(class_='bili-video-card')

            for item in videos:
                item_readers = item.find("span", class_="bili-video-card__stats--item").span.string
                item_danmu = item.find_all("span", class_="bili-video-card__stats--item")[1].span.string
                item_time = item.find("span", class_="bili-video-card__stats__duration").string
                item_title = item.find("h3").get("title")
                item_author = item.find("span", class_="bili-video-card__info--author").string
                item_link = item.find("a").get("href")[2:]
                print(item_title)

                sheet.write(n, 0, n)
                sheet.write(n, 1, item_title)
                sheet.write(n, 2, item_link)
                sheet.write(n, 3, item_readers)
                sheet.write(n, 4, item_danmu)
                sheet.write(n, 5, item_time)
                sheet.write(n, 6, item_author)
                n += 1
            wb.save("cxk1.xls")
            print(n)
            return n
        except TimeoutError:
            save_to_excel(browser,sheet,n,wb) #存储函数

最后写一个主程序调用三个函数,在主程序中,我们要记得先设置一下存储数据用到的EXCEL;

import xlwt

#设置excel
wb = xlwt.Workbook(encoding="utf-8",style_compression=0)
sheet = wb.add_sheet("b站爬去",cell_overwrite_ok=True)
sheet.write(0,0,"序号")
sheet.write(0,1,"名称")
sheet.write(0,2,"链接")
sheet.write(0,3,"观看次数")
sheet.write(0,4,"弹幕")
sheet.write(0,5,"时间")
sheet.write(0,6,"作者")

主程序完整代码:

在调用主程序时,当我们进入收索信息的第一页时,可以先爬取第一信息,然后利用一个for循环取得其他页面信息。

#设置excel
wb = xlwt.Workbook(encoding="utf-8",style_compression=0)
sheet = wb.add_sheet("b站爬去",cell_overwrite_ok=True)
sheet.write(0,0,"序号")
sheet.write(0,1,"名称")
sheet.write(0,2,"链接")
sheet.write(0,3,"观看次数")
sheet.write(0,4,"弹幕")
sheet.write(0,5,"时间")
sheet.write(0,6,"作者")

n = 1
browser = search("哔哩哔哩 (゜-゜)つロ 干杯~-bilibili") #进入B站,并完成搜索
all_h = browser.window_handles
browser.switch_to.window(all_h[1]) #获取页面代码

total = browser.find_element_by_xpath("//*[@id='i_cecream']/div/div[2]/div[2]/div/div/div/div[2]/div/div/button[9]").text #获取总页数,给for循环做准备
# n = save_to_excel(browser,sheet,n,wb) #调用函数存储页面数据
# browser = next_page(browser) #翻页
for i in range(1,int(total)+1):

    time.sleep(3) #等待加载
    n = save_to_excel(browser,sheet,n,wb)  # 调用函数存储页面数据
    browser = next_page(browser)  # 翻页

完整代码地址:github.com/zhangaynami…文章来源地址https://www.toymoban.com/news/detail-472090.html

到了这里,关于在B站爬取坤坤的视频,并获取视频基本信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python爬虫:爬取各种视频

    一、先看效果: 包括短视频 中视频 长视频等。 短视频(2到3分钟时间): 中视频(10分钟左右时间): 长视频(20分钟左右时间): 二、爬取规则: 2.1:短视频爬取: 爬取该网页视频: 方法一:F12键 找到 network 然后media,数据包中的url,复制粘贴看是否能打开该视频,如果能打

    2024年04月13日
    浏览(40)
  • python 爬取某站视频

    也是感觉好久都没有写博客了,主要是因为学业繁忙(其实是想多摆烂一会儿。。。) 距离暑假还有一个月,各科老师也开始布置相关的期末考试内容了。。。。。。 最近英语老师给我们留了一个期末作业(大学牲又要忙起来了),内容是拍摄一个短视频,既然是视频那素

    2024年02月04日
    浏览(44)
  • python怎么爬取视频

    在 Python 中爬取视频的方法有很多种,具体的步骤如下: 找到要爬取的视频的网址。 在 Python 中使用网络爬虫工具(如 requests 库)发送 HTTP 请求,获取视频的网页源代码。 使用正则表达式或者网页解析工具(如 BeautifulSoup)对网页源代码进行解析,找到视频文件的 URL 地址。 使用

    2024年02月16日
    浏览(64)
  • python爬取bilibili,下载视频

    python下载bilibili视频合集 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3代码 链接:https://pan.baidu.com/s/1WuXTso_iltLlnrLffi1kYQ?pwd=1234 3.1 下载单个视频 感觉现在下载的清晰度不够,可以在找找,给这块替换了就行 代码 3.2 下载选集视频 选集视频的播放链接很好找,就是后面的p=几啥的,拼一

    2024年02月10日
    浏览(41)
  • 坤坤音效键盘(Python实现)

    坤坤音效键盘说明: 单独按下 j 、 n 、 t 、 m j、n、t、m j 、 n 、 t 、 m 按键,会对应触发 “鸡”、“你”、“太”、“美” 音效。 连续按下 j n t m jntm jn t m 按键,会触发 “鸡你太美” 的较长音效。 连续按下 n g m ngm n g m 按键,会触发 “你干嘛” 的较长音效。 按下Esc按键

    2024年02月03日
    浏览(32)
  • 爬虫项目实战——爬取B站视频

    目标:对B站视频详情页url进行视频的爬取。 注:由于B站的音频和视频的链接是分开的,所以在提取是需要分别提取,然后进行合成。 这里只管提取,合成的工作以后再说。 发送请求 对于视频详情页url地址发送请求 https://www.bilibili.com/video/BV11b4y1S7Jg 获取数据 获取响应体的文

    2024年02月07日
    浏览(41)
  • 爬虫的基本原理:爬虫概述及爬取过程

    前言 随着互联网的不断发展和普及,我们的生活越来越离不开网络。而网络世界中有着海量的信息和数据,这些信息和数据对于我们的工作和生活都有很大的帮助。但是,如何高效地获取这些数据呢?这时候,爬虫这个工具就派上用场了。 一、爬虫概述 爬虫是一种抓取互联

    2024年02月15日
    浏览(41)
  • python批量爬取某站视频

    前言: 本项目是批量下载B站如下图示例的视频: (家里的小孩想看动画片,就下载到U盘上在电视上给他们放。。。) 在这个项目中,涉及到的模块有以下几个: 1.shutil: Python 标准库中的一个模块,用于文件操作,包括复制、移动、删除文件等。在这个项目中,主要用于创

    2024年02月20日
    浏览(44)
  • 使用python爬虫爬取bilibili视频

    可以使用 Python 爬虫框架如 Scrapy 来爬取 Bilibili 的视频。首先需要了解 Bilibili 网站的构造,包括数据是如何呈现的,然后构建请求来获取所需的数据。同时需要考虑反爬虫措施,可能需要使用代理 IP 和 User-Agent 等方法来绕过反爬虫机制。 这里提供一个简单的爬取视频标题的

    2024年02月08日
    浏览(39)
  • Python爬虫--爬取哔哩哔哩(B站)短视频平台视频

    目录 1、开发工具 2、第三方库 3、实现思路 4.单个爬取B站视频 5.批量爬取B站视频 6.查找所需数据 结尾     1、开发工具 Python3.9 pycharm requests 和其他python内置库 2、第三方库 安装第三方库 pip install requests 3、实现思路 1.用requests发送get请求,获得下载链接 2.将下载到B站视频和

    2024年02月22日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包