使用Python爬取B站UP主所有视频信息_( listname 0_listname )upname avtitle-( favtime fa

看样子这个JS脚本是来用于检测用户的信息,并根据这些条件可能会重定向不同的页面。此外,还有一些用于页面性能监控、日志上报和webp图片格式支持检测的脚本。

本菜鸟技术有限,打不过就绕过,直接上selenium来获取所有视频的BV号

2、综合思路

selenium用来获取BV号,爬取到具体的信息保存下来,配合多线程、requests用来爬取具体视频的信息,提高爬取效率,最后用execl保存爬取到的所有信息

二、代码实现

1、初始化Selenium WebDriver:

使用Selenium的Chrome WebDriver来模拟用户在浏览器中的操作,这样可以处理JavaScript渲染的页面

class GetInfo():
    def __init__(self, user_id):
        self.a_list = []  # 存储每一个视频的url
        self.d = webdriver.Chrome()  # 初始化Chrome浏览器驱动
        self.user_id = user_id
        self.base_url = f'https://space.bilibili.com/{user_id}/video'
        self.d.get(self.base_url)
        #这篇文章写于2022年,当时B站免登入可以搜索视频,查看视频,但是这段时间再次尝试爬取资源时,加了必须认证登入,尝试过很多次,没有获取token,只能老老实实,登入后再去爬取信息
        time.sleep(10)
        print("速度扫码登入")

实际效果,是可以直接访问,

但是会弹出登入验证,甚至因为未登入无法获取视频列表,接口返回无权限,遇到这种情况,只能登入,尝试过selenium带cookie,但是没用,甚至登入后copy as curl再postman导入请求,都返回无权限,说明搜索接口再请求服务器时候,没有带上cookie

2、访问用户视频列表页面

这里使用XPath定位到视频列表的ul元素,然后遍历其中的li元素,提取每个视频的URL。

    def get_url(self):
        # 从当前页面获取所有视频的URL并保存到本地文件
        ul=WebDriverWait(self.d, 10).until(lambda x: x.find_element(By.XPATH, '//*[@id="submit-video-list"]/ul[1]'))
        lis = ul.find_elements(By.XPATH, "li")
    
  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值