Python网络爬虫实战-b站新番时间表

目录

1.网页抓包

代码

完整代码


使用Python对B站的新番动漫表进行爬取,用到基础爬虫库requests进行爬取,并整理返回json数据


1.网页抓包

 

通过请求发现,这是个动态网页。那么爬取源代码就不可能实现了,那我们就得爬取动态内容。

通过xhr文件我们知道了api接口位置的json数据文件为:timeline?type=1&before=6

 


代码

这样就简单多了,我们就可以这样写 

import requests

headers={
    "User-Agent":"填自己的User-Agent",
    #"Cookie":"选填"
    }   #请求头

"""
获取到api的json数据并截取result位置内容返回
return Json
"""
def get_json(_url,_headers):
    _msg_={}
    r=requests.get(url=_url,headers=headers)
    #   如果api没返回200及返回None
    if r.status_code == 200:
        for result in r.json()["result"]:
            for res in result["episodes"]:
                _msg_[result["date"]]=res
            #break
        return _msg_
    else:
        return None

这样我们就获取到API返回的Json数据了!但是里面的数据很杂乱,还需要我们进行清洗。
 

"""
处理json内容并清洗为自己想要格式
return Json
"""
def return_msg():
    res={}
    _json_=get_json("https://api.bilibili.com/pgc/web/timeline?types=1&before=6&after=6",headers)
    for k in _json_.keys():
        for key,msg in  _json_[k].items():
            json=_json_[k]
            res[k]=[
                f"日期:{k}",
                f"番名:{json['title']}",
                f"封面:{json['cover']}",
                f"更新话数:{json['pub_index']}",
                f"更新时间:{json['pub_time']}",
                ]
            break
    return res

然后就是把清洗好的数据输出出来

# 输出return_msg内容
for k,m in return_msg().items():
    for i in return_msg()[k]:
        print(i)
    print("\n")

完整代码

import requests

headers={
    "User-Agent":"填写自己的User-Agent",
    #"Cookie":"选填"
    }   #请求头

"""
获取到api的json数据并截取result位置内容返回
return Json
"""
def get_json(_url,_headers):
    _msg_={}
    r=requests.get(url=_url,headers=headers)
    #   如果api没返回200及返回None
    if r.status_code == 200:
        for result in r.json()["result"]:
            for res in result["episodes"]:
                _msg_[result["date"]]=res
            #break
        return _msg_
    else:
        return None
"""
处理json内容并清洗为自己想要格式
return Json
"""
def return_msg():
    res={}
    _json_=get_json("https://api.bilibili.com/pgc/web/timeline?types=1&before=6&after=6",headers)
    for k in _json_.keys():
        for key,msg in  _json_[k].items():
            json=_json_[k]
            res[k]=[
                f"日期:{k}",
                f"番名:{json['title']}",
                f"封面:{json['cover']}",
                f"更新话数:{json['pub_index']}",
                f"更新时间:{json['pub_time']}",
                ]
            break
    return res

# 输出return_msg内容
for k,m in return_msg().items():
    for i in return_msg()[k]:
        print(i)
    print("\n")

好的,今天的分享就是这么多了。有问题或bug请联系QQ群:706128290

我是PYmili我们下次再见!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pymili

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值