Python爬虫入门(#8)——爬取B站新番时间表

爬取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天的番剧更新信息


版权声明:本文为weixin_44077128原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。