【Part1 查找请求链接、请求头、请求参数】
1.点开自己b站收藏夹的某一个子收藏夹的具体网址
2.右键,‘检查’;
3.点击开发工具栏的Network;
4.刷新网页;
5.选择XHR;
6.左侧窗口点击List_all请求找到请求连接
7.右侧窗口的Headers--General--Request URL ,找到请求的网址,复制粘贴,直到?前的内容;再找到user-agent作为请求头;最后找到Query String Parameters的所有params参数找到请求头和请求参数
8.查看Preview部分的json层级
查看preview中的json层级
【Part2爬取数据并用csv或者excel保存】
【写入csv】
import requests
import csv
headers={'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'}
start_url='# 自创建收藏夹其中一个收藏夹的网址 ?之前的内容'
with open('bilibili_1.csv','w',encoding='utf-8') as file:#with open语句处理csv的写入
writer=csv.writer(file)
writer.writerow(['视频标题','视频链接','视频简介'])# 写入第一行标题
for i in range(1,5):#一次爬取4(1-4)页,否则有可能被当成恶意请求
params={
'media_id': '224273278',
'pn': i,
'ps': 20,
'keyword':'',
'order': 'mtime',
'type': 0,
'tid': 0,
'jsonp': 'jsonp'
}
res=requests.get(start_url,headers=headers,params=params)
json=res.json()
list=json['data']['medias']# 一层一层提取Json
for info in list:# 用for循环爬取所有目标值
title=info['title']
link=info['link']
intro=info['intro']
writer.writerow([title,link,intro])#写入数据
【写入excel】
import requests
import openpyxl
headers={'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'}
start_url='# 自创建收藏夹其中一个收藏夹的网址 ?之前的内容'
wb=openpyxl.Workbook()
sheet=wb.active
sheet.title = '搞笑视频'
sheet.append(['标题','链接','简介'])
for i in range(1,5):
params={
'media_id': '224273278',
'pn': i,
'ps': 20,
'keyword':'',
'order': 'mtime',
'type': 0,
'tid': 0,
'jsonp': 'jsonp'
}
res=requests.get(start_url,headers=headers,params=params)
json=res.json()
list=json['data']['medias']
for info in list:
title=info['title']
link=info['link']
intro=info['intro']
sheet.append([title,link,intro])
wb.save('bilibili_lol.xlsx')
wb.close() # 最后要写上关闭文件
【追加sheet】需要变动的地方
import openpyxl
wb=openpyxl.load_workbook('bilibili_lol.xlsx')
sheet4=wb.create_sheet()
sheet4.title='17_18'
sheet4.append(['标题','链接','简介'])
import requests
import openpyxl
headers={'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'}
start_url='https://api.bilibili.com/x/v3/fav/resource/list'
for i in range(17,19):
params={
'media_id': '224273278',
'pn': i,
'ps': 20,
'keyword':'',
'order': 'mtime',
'type': 0,
'tid': 0,
'jsonp': 'jsonp'
}
res=requests.get(start_url,headers=headers,params=params)
json=res.json()
list=json['data']['medias']
for info in list:
title=info['title']
link=info['link']
intro=info['intro']
sheet4.append([title,link,intro])
wb.save('bilibili_lol.xlsx')
wb.close()