|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
halo 各位大神们
关于爬虫这边,我这边已经把B站里的html 转换成json了 ,但是按照小甲鱼的课程导出来了字典类的数据结构,但是经过我子集不断尝试发现:我们需要的数据 视频标题藏在result 里,而result是一个列表,然后列表里的[data]的字典里的 字典里 如图:
实际要到下面这一层才能找到我们需要的所有数据的字典data = soup['data']['result'])[-1]['data'] ##定位到数据结构层,这还是我试了好多次的。。。
有没有办法跟小甲鱼一样显示所有非字符串的迭代结构都显示出来啊。。。 要不然太难找到title这个对应在哪个层次下面了?
##下面是为了直接显示 嵌套字典的层次关系
import requests
import json
import re
def get_space_end(level): ##无子集
return ' ' * level + '-'
def get_space_expand(level): ##可以继续扩展
return ' ' * level + '+'
def find_keys(tar ,level):##tar 是一个嵌套字典
keys = iter(tar) ## 利用迭代器将字典的键拿出来
for each in keys:
if (type(tar[each]) is not (dict)): ## 设置退出条件,如果字典的值不是另字典,则退出递归
print (get_space_end(level) + each)
else:
next_level = level + 1
print(get_space_expand(level) + each)
find_keys(tar[each], next_level) ## 如果字典的值是另外一个字典,继续将这个值调用函数 进行递归
def get_res(url):
headers = {
'uesr-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36'
}
res = requests.get(url, headers = headers )
res_json = json.loads(res.text)
find_keys(res_json, 1)
def main():
keywords = '编程'
url = f'https://api.bilibili.com/x/web-interface/search/all/v2?__refresh__=true&_extra=&context=&page=1&page_size=42&order=&duration=&from_source=&from_spmid=333.337&platform=pc&highlight=1&single_column=0&keyword={keywords}&preload=true&com2co=true'
get_res(url)
if __name__ =='__main__':
main()
|
|