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

本文介绍如何使用Python爬取B站的新番时间表。首先,通过分析B站番剧页面的URL发现数据是通过ajax传输的。接着,定位到请求URL:https://bangumi.bilibili.com/web_api/timeline_global,获取JSON数据。然后,解析JSON,提取出新番时间表,并打印出每天的新番信息,特别是当天及其前后三天的更新。最后,展示了提取信息的代码实现。
摘要由CSDN通过智能技术生成

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值