想看看自己的哔哩哔哩关注了哪些人,并且是什么时候关注的,可以直接爬下来看。
只需要找到这个网址,然后就可以从里面提取代码中的信息了:https://api.bilibili.com/x/relation/followings?vmid=391136387&pn=1&ps=20&order=desc&order_type=&gaia_source=main_web&web_location=333.999&w_rid=c5ce5884056fbb240868324f13f009f7&wts=1699885486
from datetime import datetime
import requests
import json
headers = {
'authority': 'api.bilibili.com',
'accept': '*/*',
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'cookie': '自行获取',
'origin': 'https://space.bilibili.com',
'referer': 'https://space.bilibili.com/391136387/fans/follow?spm_id_from=333.788.0.0',
'sec-ch-ua': '"Microsoft Edge";v="119", "Chromium";v="119", "Not?A_Brand";v="24"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-site',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0'
}
def convert_timestamp_to_date(timestamp):
return datetime.utcfromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')
def fetch_followings(vmid, max_per_page=50):
base_url = "https://api.bilibili.com/x/relation/followings"
all_followings = []
page_number = 1
total_followers = None
while True:
params = {
"vmid": vmid,
"pn": page_number,
"ps": max_per_page,
"order": "desc",
"order_type": "",
"gaia_source": "main_web",
"web_location": "333.999"
}
response = requests.get(base_url, params=params, headers=headers)
if response.status_code != 200:
print(f"Failed to fetch data: {response.status_code}")
break
data = response.json()
if 'data' not in data or 'list' not in data['data']:
print("Invalid response format.")
break
followings = data['data']['list']
for following in followings:
following['followed_date'] = convert_timestamp_to_date(following['mtime'])
all_followings.extend(followings)
if total_followers is None:
total_followers = data['data']['total']
if len(all_followings) >= total_followers:
break
page_number += 1
return all_followings
def save_data(data, filename="followings_data.json"):
with open(filename, "w", encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False, indent=4)
def main():
vmid = "391136387"
followings = fetch_followings(vmid)
save_data(followings)
if __name__ == "__main__":
main()