手把手教你使用Python网络爬虫获取B站视频选集内容
来源:Python爬虫与数据挖掘
作者:Python进阶者一、背景引入
一提到B站,第一印象就是视频,相信很多小伙伴和我一样,都想着去利用网络爬虫技术获取B站的视频吧,但是B站视频其实没有那么好拿到的,关于B站的视频获取,之前有介绍通过you-get库进行实现。
言归正传,经常在B站上学习的小伙伴们可能经常会遇到有的博主连载几十个,甚至几百个视频,尤其像这种编程语言、课程、工具使用等连续的教程,就会出现选集系列,如下图所示。
当然这些选集的字段我们肉眼也是可以看得到的。只是通过程序来实现的话,可能真没有想象的那么简单。那么这篇文章的目标呢,就是通过Python网络爬虫技术,基于selenium库,实现视频选集的获取。二、具体实现
这篇文章我们用的库是selenium,这个是一个用于模拟用户登录的库,虽然给人的感觉是慢,但是在网络爬虫领域,这个库还是用的蛮多的,用它来模拟登录、获取数据屡试不爽。下面是实现视频选集采集的所有代码,欢迎大家亲自动手实践。# coding: utf-8 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait class Item: page_num = "" part = "" duration = "" def __init__(self, page_num, part, duration): self.page_num = page_num self.part = part self.duration = duration def get_second(self): str_list = self.duration.split(":") sum = 0 for i, item in enumerate(str_list): sum += pow(60, len(str_list) - i - 1) * int(item) return sum def get_bilili_page_items(url): options = webdriver.ChromeOptions() options.add_argument("--headless") # 设置无界面 options.add_experimental_option("excludeSwitches", ["enable-automation"]) # options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2, # "profile.managed_default_content_settings.flash": 0}) browser = webdriver.Chrome(options=options) # browser = webdriver.PhantomJS() print("正在打开网页...") browser.get(url) print("等待网页响应...") # 需要等一下,直到页面加载完成 wait = WebDriverWait(browser, 10) wait.until(EC.visibility_of_element_located((By.XPATH, "//*[@class="list-box"]/li/a"))) print("正在获取网页数据...") list = browser.find_elements_by_xpath("//*[@class="list-box"]/li") # print(list) itemList = [] second_sum = 0 # 2.循环遍历出每一条搜索结果的标题 for t in list: # print("t text:",t.text) element = t.find_element_by_tag_name("a") # print("a text:",element.text) arr = element.text.split(" ") print(" ".join(arr)) item = Item(arr[0], arr[1], arr[2]) second_sum += item.get_second() itemList.append(item) print("总数量:", len(itemList)) # browser.page_source print("总时长/分钟:", round(second_sum / 60, 2)) print("总时长/小时:", round(second_sum / 3600.0, 2)) browser.close() return itemList get_bilili_page_items("https://www.bilibili.com/video/BV1Eb411u7Fw")
这里用到的选择器是xpath,利用视频示例是B站的《高等数学》同济版 全程教学视频(宋浩老师)视频选集,大家如果想抓取其他视频选集的话,只需要更改上述代码的最后一行的URL链接即可。三、常见问题
在运行过程中小伙伴们应该会经常遇到这个问题,如下图所示。
这个是因为谷歌驱动版本问题导致的,只需要根据提示,去下载对应的驱动版本即可,驱动下载链接:https://chromedriver.storage.googleapis.com/index.html
2020年最常用密码TOP200出炉第一你猜到了吗?密码管理器NordPass公布了2020年最常用密码TOP200榜单,可以说,这是2020年最糟糕的200个密码。该榜单详细说明了密码被公开使用的次数和破解所需的时间,还比较了20
手机QQ8。4。17发布群聊三件套来了iOS还有独享功能日前,手机QQ更新到v8。4。17版本,带来了群聊三件套幸运字符资料卡展示王者战绩消息可多选设为群精华。与此同时,在线状态新增我的心情,让你能把心情打在公屏上。iOS端还能分屏查看
吴某人的回应,只是被娱乐圈唾弃前最后的挣扎娱乐圈从来不缺热度和吃瓜,近几天又被娱乐圈的吴姓歌手雷到了,但必定不是顶流,热度也没有那么多关注,但在女性艺人接二连三的爆料过后,吴姓艺人的声明雷到的,各种小孩子撒泼式的发誓,自己
戴尔电脑3668,win10BIOS设置,台式机BIOS设置最近安装了一次戴尔的台式机,总结下BIOS的修改,当时是换了一个固态硬盘。1台式机长按ESC或者在系统选择界面按F2键,进入BIOS设置界面,首先找到secureboot选项点开,
汇编指令学习31。bic(BitClear)位清除指令bic指令的格式为bic条件SRd,Rn,operandbic指令将Rn的值与操作数operand2的反码按位逻辑与,结果存放到目的寄存器R
尽快建立艺人艺德和公众行为规范制度,不然娱乐圈真会是个圈娱乐圈从来都不会缺新闻,这几年娱乐圈的饭圈文化越来越严重,甚至到了影响舆论和司法公正的地步,今年的郑爽事件,当时郑爽的粉丝就喧嚣与各个娱乐版块的头条之上,随着郑爽国外代孕,一瓶水三
算法学习11。两数之和给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。给定一个整数数组nums和一个整数目标
只要努力前行,明天总比你不努力的好二流大学毕业的研究生,现在都过得怎么样我个人觉得,考学和挣钱是两码事,但通过学习提高自己,确实一个很好的捷径。与社会各种人际关系的需要应付,需要思量人际关系的考量来说,学习说实话是
嵌入式uboot汇编指令学习4自己的学习工作日志,比较杂,各位勿怪1BSSdatatext段2LDM指令等指令3。堆栈寻址方式,依次讲解STMFDSTMEDSTMFASTMEA4最小计算机系统bss段bss段(
ARM汇编汇编中IAIBDADB和FDEDFAEA1ARM汇编汇编中IAIBDADB和FDEDFAEA2ARM处理器的9种模式详解3MRS,MSR指令详解4嵌入式DDR布线分析DDR信号布线介绍5嵌入式学习之IRQ和FIQ之间的区
也许亲情和包容是郭刚堂与孩子相认后最好的结局以郭刚堂寻找丢失孩子为背景的电影失孤,刘德华先生演绎得让人泪流满面,内心充满了心酸。在失孤播出五年后,郭刚堂寻子24年终于在警方的团圆行动行动中,找到了自己的孩子郭新振。站在道德的