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