目录
使用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我们下次再见!










