0
点赞
收藏
分享

微信扫一扫

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

何晓杰Dev 2022-01-06 阅读 63

目录

1.网页抓包

代码

完整代码


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


 

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

通过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 条评论