批量爬取B站網絡視頻信息

使用XPath爬取B站視頻鏈接等相關信息

    • 分析B站html框架
    • 獲取內容
    • 完整代碼

對于B站,目前網上的爬蟲大多都是使用通過解析服務器的響應來爬取想要的內容,下面我們通過使用XPath來爬取B站上一些想要的信息

在這里插入圖片描述

此次任務我們需要對B站搜索到的關鍵字,并爬取搜索的視頻時間、播放量、彈幕量等信息

分析B站html框架

打開B站后,搜索關鍵字并按下F12進入開發者模式,就能看到頁面的html代碼,需要在這些代碼中找到需要爬取的信息。
在這里插入圖片描述
點擊右上角的箭頭圖片,再點擊想要爬取內容的信息,就會自動跳轉到對應的html代碼上。

獲取內容

找到想要爬取的信息就得獲取信息的XPath表達式,這兒可以通過如下圖方法快速得到表達式。
在這里插入圖片描述
這樣就可以得到該位置的XPath表達式了。

由于第一頁XPath表達式與后面頁的XPath表達式有些許的不同,需要通過對鏈接的驗證來使用不同的表達式
在這里插入圖片描述

完整代碼

import requests
from lxml import etree
import time
import random
import csv
import pandas as pdheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'}result = pd.DataFrame()urls = ['https://search.bilibili.com/all?vt=69174939&keyword=%E5%A4%A7%E6%95%B0%E6%8D%AE&from_source=webtop_search&spm_id_from=333.1007&search_source=2','https://search.bilibili.com/all?keyword=%E7%89%A9%E8%81%94%E7%BD%91%E5%B7%A5%E7%A8%8B&from_source=webtop_search&spm_id_from=333.1007&search_source=2','https://search.bilibili.com/all?vt=69174939&keyword=%E7%94%B5%E5%AD%90%E7%A7%91%E5%AD%A6%E4%B8%8E%E6%8A%80%E6%9C%AF&from_source=webtop_search&spm_id_from=333.1007&search_source=2','https://search.bilibili.com/all?vt=69174939&keyword=%E8%99%9A%E6%8B%9F%E7%8E%B0%E5%AE%9E&from_source=webtop_search&spm_id_from=333.1007&search_source=2','https://search.bilibili.com/all?vt=691740939&keyword=%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD&from_source=webtop_search&spm_id_from=333.1007&search_source=2',
]url_key = [len(i) + 6 for i in urls]
for index, url in enumerate(urls):for page in range(1, 10):html = requests.get(url, headers=headers)print(url)bs = etree.HTML(html.text)if url[-8:-1] == 'source=':items = bs.xpath('//*[@id="i_cecream"]/div/div[2]/div[2]/div/div/div/div[3]/div')else:items = bs.xpath('//*[@id="i_cecream"]/div/div[2]/div[2]/div/div/div[1]')for i in range(1, 43):try:time = items[0].xpath(f'div[{i}]/div/div[2]/div/div/p/a/span[2]')[0].textexcept:time = Nonetry:up_author = items[0].xpath(f'div[{i}]/div/div[2]/div/div/p/a/span[1]')[0].textexcept:up_author = Nonetry:title = items[0].xpath(f'div[{i}]/div/div[2]/div/div/a/h3/@title')[0]except:title = Nonetry:href = items[0].xpath(f'div[{i}]/div/div[2]/div/div/a/@href')[0]except:href = Nonetry:Playback_volume = items[0].xpath(f'div[{i}]/div/div[2]/a/div/div[2]/div/div/span[1]/span')[0].textexcept:Playback_volume = Nonetry:Barrage_volume = items[0].xpath(f'div[{i}]/div/div[2]/a/div/div[2]/div/div/span[2]/span')[0].textexcept:Barrage_volume = Nonetry:Video_duration = items[0].xpath(f'div[{i}]/div/div[2]/a/div/div[2]/div/span')[0].textexcept:Video_duration = Noneprint(time, title, up_author, href, Playback_volume, Barrage_volume, Video_duration)df = pd.DataFrame({'time': [time], 'title': [title], 'up_author': [up_author], 'href': [href],'Playback_volume': [Playback_volume], 'Barrage_volume': [Barrage_volume],'Video_duration': [Video_duration]})result = pd.concat([result, df])if url[-8:-1] == 'source=':url = url + '&page=2&o=36'else:new_page = int(url[url_key[index]]) + 1url = url[:url_key[index]] + f'{new_page}&o={(new_page - 1) * 36}'
result.to_excel("F:/B站數據.xlsx", index=False)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44067.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44067.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44067.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據結構 —— FloydWarshall算法

數據結構 —— FloydWarshall算法 FloydWarshall算法三種最短路徑算法比較1. Dijkstra算法2. Bellman-Ford算法3. Floyd-Warshall算法總結 我們之前介紹的兩種最短路徑算法都是單源最短路徑,就是我們要指定一個起點來尋找最短路徑,而我們今天介紹的Floyd…

ctfshow-web入門-文件上傳(web166、web167)(web168-web170)免殺繞過

目錄 1、web166 2、web167 3、web168 4、web169 5、web170 1、web166 查看源碼,前端只讓傳 zip 上傳 zip 成功后可以進行下載 隨便搞一個壓縮包,使用記事本編輯,在其內容里插入一句話木馬: 上傳該壓縮包,上傳成功…

附下載 | 100項能源領域網絡與數據安全政策全集(2024版)

能源是工業的糧食,能源安全事關國家根本安全。當今國際局勢風云變幻,全球地緣政治、經濟、科技體系正經歷深刻變化,能源局勢將更加錯綜復雜,威脅能源安全的各種“灰犀牛”“黑天鵝”事件時有發生,促使國際能源版圖深刻…

system V共享內存【Linux】

文章目錄 原理shmgetftokshmat(share memory attach)shmdt,去關聯(share memory delete attach)shmctl ,刪除共享內存共享內存與管道 原理 共享內存本質讓不同進程看到同一份資源。 申請共享內存: 1、操作系統在物理內存當中申請…

詳解Redis:什么是Redis?

什么是Redis? Redis(Remote Dictionary Server)是一種開源的、高性能的、基于內存快速讀寫的的數據結構存儲系統,常用于緩存,分布式鎖等場景; Redis常用數據類型有哪些? String(字符串) 適用場景…

Qt中實現讓靜態圖片動起來,創建動畫效果

在現代應用程序開發中,動畫效果是提升用戶體驗的重要元素之一。Qt作為一個強大的跨平臺應用程序框架,提供了豐富的工具和庫來創建各種動畫效果。本文將介紹如何在Qt中使用靜態圖片創建動畫效果。 實現方法一 使用QTimer和QPixmap 1.準備圖片資源&#…

Qt圖形與圖片(Qt位置相關函數、Qt基礎圖形的繪制、雙緩沖機制、顯示SVG格式圖片)

此篇文章介紹幾種主要位置函數及其之間的區別,以及各種與位置相關函數的使用場合;然后,通過一個簡單繪圖工具實例,介紹利用QPainter和QPainterPath兩種方法繪制各種基礎圖形;最后,通過幾個實例介紹如何利用…

暑假自律日記十

7.11 (半小時日記打卡之——暑假第十天) 日程 8.30起床 9.20到達逸夫樓開始總結區間DP,上午完成了區間DP和四邊形優化部分的學習 下午組隊打了一場去年的牛客多校,壓力有點大,問題也有點多,總而言之&…

GD32F303RET6讀取SGM58031電壓值

1、SGM58031芯片詳解 (1)SGM58031是一款低功耗,16位精度,delta-sigma (ΔΣ)模數轉換器(ADC)。它從3V到5.5V供電。 (2)SGM58031包含一個片上參考和振蕩器。它有一個I2C兼容接口,可以選擇四個I2…

深入Memcached鍵值對限制:優化存儲策略

標題:深入Memcached鍵值對限制:優化存儲策略 Memcached作為一種廣泛使用的高性能分布式內存緩存系統,對鍵值對的大小有特定的限制。這些限制不僅關系到緩存效率,還直接影響到緩存數據的組織和內存的使用。本文將深入探討Memcache…

【RHCE】系統服務綜合實驗

一、實驗內容 現有主機 node01 和 node02,完成如下需求: 1、在 node01 主機上提供 DNS 和 WEB 服務 2、dns 服務提供本實驗所有主機名解析 3、web服務提供 www.rhce.com 虛擬主機 4、該虛擬主機的documentroot目錄在 /nfs/rhce 目錄 5、該目錄由 node02…

Python | Leetcode Python題解之第229題多數元素II

題目: 題解: class Solution:def majorityElement(self, nums: List[int]) -> List[int]:cnt {}ans []for v in nums:if v in cnt:cnt[v] 1else:cnt[v] 1for item in cnt.keys():if cnt[item] > len(nums)//3:ans.append(item)return ans

【conda】解決 An HTTP error occurred when trying to retrieve this URL.問題

1. 修改SSL驗證 如果其他方法無效,還可以嘗試關閉SSL驗證來解決問題。具體操作如下: 在終端中輸入以下命令,關閉SSL驗證: conda config --set ssl_verify false或者,在conda的配置文件(.condarc&#xff0…

為什么渲染農場渲染的是幀,而不是視頻?

在3D動畫產業的壯闊畫卷中,渲染農場作為幕后英雄,以其龐大的計算能力支撐起無數視覺奇觀的誕生。這些由高性能計算機集群構成的系統,通過獨特的逐幀渲染策略,解鎖了單機難以企及的創作自由與效率。本文將深入剖析這一策略背后的邏…

maven7——(重要,構建項目)maven項目構建(命令)

Maven的常用命令管理項目的生命周期 clean命令 清除編譯產生的target文件夾內容,可以配合相應命令在cmd中使用,如mvn clean package, mvn clean test D:\工作\公司培訓-4班\day20\day20\untitled1>mvn clean compile命令 該命令可以…

element如何實現自定義表頭?

有時候我們需要實現自定義表頭,例如表頭里加按鈕啥的,這時候就需要用到自定義表頭,但是官方對自定義表頭的使用寫的還是比較簡單,今天就來詳細說說 在需要使用自定義表頭的表頭上使用:render-header來啟用自定義表頭: <el-table-column :render-header="button&…

機器學習開源分子生成系列(2)-基于三維形狀和靜電相似性的DeepFMPO v3D安裝及使用

前言 本文是基于 3D 的分子生成方法DeepFMPO v3D的介紹及安裝使用。 一、DeepFMPO v3D是什么&#xff1f; github代碼介紹文章 在藥物發現中&#xff0c;如何尋找具新穎性和結構多樣性的候選分子是頗受藥物設計科學家關注的問題。通過虛擬篩選的化學空間搜索往往會受限于篩選…

Linux賬戶和組管理——用戶密碼文件,工作組賬號文件,用戶管理

#### 用戶密碼文件 - /etc/shadow存儲密碼加密后的密文&#xff0c;又稱為“影子文件”&#xff0c;該文件為了保證了賬戶密碼的安全性只有 root 賬戶擁有讀權限&#xff0c;注意&#xff1a;若該文件權限發生變化&#xff0c;需要留心惡意攻擊 bash [rootserver ~]# ll /etc/…

linux之棧溢出分析

我們來創建一個例子&#xff0c;其中包含一個段錯誤&#xff0c;這次是由于棧溢出導致的。這是一個常見的錯誤&#xff0c;通常發生在程序遞歸調用深度過大&#xff0c;超出了為棧分配的內存空間。 下面是一個簡單的C程序&#xff0c;stack_overflow_example.c&#xff0c;它通…

優化與改進之輕量級Transformer - Transformer教程

在自然語言處理&#xff08;NLP&#xff09;的世界里&#xff0c;Transformer模型無疑是一顆璀璨的明珠。自從它在2017年被提出以來&#xff0c;就憑借其強大的性能和優雅的設計贏得了廣泛的關注和應用。然而&#xff0c;隨著應用的深入&#xff0c;Transformer的體量和計算資源…