爬取B站新番时间表
本次使用bs4来进行解析实践
获取url
打开B站番剧页面,其url为
https://www.bilibili.com/anime/timeline/
但我们爬取该页面发现里面没有任何内容
这说明数据使用ajax进行传输
我们打开控制台,选定XHR包,然后点击新番索引表标签页
一个叫做timeline_global的包中保存了全部的时间表数据
而其Request URL为https://bangumi.bilibili.com/web_api/timeline_global
惊现bangumi
而通过其响应头可以看出返回的数据为json类型
由此我们就可以编写获取数据的代码
爬取json数据
import requests
url = "https://bangumi.bilibili.com/web_api/timeline_global/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/89.0.4389.114 Safari/537.36",
}
response = requests.get(url=url, headers=headers)
data_json = response.json()
print(data_json)
解析json数据
通过打印的json数据可以看出来
新番时间表的内容存储在result字段中,而且是一个列表类型,所以我们先打印一下这个列表
for item in data_json["result"]:
print(item)
每天的新番数据一目了然,如果没有存在空数据,甚至有is_today
字段来指示是否是今天
提取信息
我们主要提取当天前后±3天的新番更新信息
info_list = []
count = 0
for day_dic in data_json["result"]:
if day_dic["is_today"] == 1:
break
count += 1
result_list = data_json["result"]
for i in range(count - 3, count + 4):
info_list.append(result_list[i])
for item in info_list:
print(item)
由此就得到了当天前后±3天的番剧更新信息