爬取b站目录
引言
- 由于本人在b站上学习时候有时候统一过一遍大概思路思路,要看着目录回忆该章节所学内容来复习所以写了这几行简单代码
- 下面会有代码如何运行的讲解
# -*- coding: UTF-8 -*-
import os
import json
count = 1
//https://www.bilibili.com/video/BV1Qf4y1T7Hx?spm_id_from=333.337.search-card.all.click&vd_source=580b701576423684e8130cabe409e321
//如这个网址的id就是BV1Qf4y1T7Hx
id = "BV1Qf4y1T7Hx" #java网页id
class Directory(object):
def __init__(self):
self.url = f"https://api.bilibili.com/x/player/pagelist?bvid={id}&jsonp=jsonp"
self.hearder = {
"user-agent":""
,"cookie":""
,"referer":""
,"origin":""
}
def run(self):
global count
while count:
try:
import requests
import openpyxl
print("requests package already install")
print("openyxl package already install")
break
except:
print("正在下载")
os.system("pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests")
os.system("pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openpyxl")
count -= 1
continue
resq = requests.get(url=self.url,headers=self.hearder,verify=False)
js = json.loads(resq.text)
return js
def save(self,obj):
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
for i in range(1,len(obj["data"])):
s = obj["data"][i]["part"]
ws.cell(i,1,s)
wb.save("目录.xlsx")
if __name__ == '__main__':
directory = Directory()
dataDict = directory.run()
directory.save(dataDict)
代码讲解
-
首先需要安装python中的库模块
-
在windows系统下右键此电脑点击高级系统设置找到环境变量
-
解释器建议在官网下载找到pythonxx.exe路径来配置环境变量
-
配置好了以后按win+r输入cmd进入命令行
如果显示以上内容便说明配置成功
-
然后在命令行中下载requests和xlwt模块,json是python自带模块可以不用下载
如果有网速影响也可能会下载失败具体的可以另外找到方法 -
下载好了以后如果又想要爬取视频的目录可以更改id
-
更改id以后
- F12打开开发者工具后点击网络
- 找到pagelist的包以后复制hearder中的参数填入就可以爬取想要的目录了
- 将useragent复制用字典形式放在headers中
- book.save(‘.\a.xlsx’)里面的a.xlsx中a可以更改名字,xlsx是excle后缀表示建立后缀名为xlsx的文件。
注意事项
- 由于并没有加proxy所以url的爬取是根据b站限制的,当报错时候提醒part端口被占用或重复表示b站上的服务器请求过多,合法爬取,所以隔一天可以再用。
-