python爬取B站番剧链接

xiaoxiao2021-02-28  32

目标:爬取B站数据,从而获取指定番剧的更新信息

问题:在搜索界面查看网页源码时发现网页不是由静态H5构成,不直接包含所需要的信息,如下:

解决办法:

百度之后发现B站网页由动态JS加载,所以不能直接通过源码获取,需要通过F12工具获取页面的API接口,参考文章:https://blog.csdn.net/qq_33344121/article/details/78514861

主要核心步骤:

在搜索界面打开F12工具,F5刷新界面,找到如下js文件: 在preview页面能够看到result字段包括了要找的信息: 结合文章中的教程,可以通过以下函数获取json对象并存为字典 items=json.loads(requests.get(recent_url).text)['result']

其中request.get().text函数可以获取指定url的返回值内容,结合json.load函数可以将json对象转换为字典,之后提取key为’result’的值即 之后再提取key为’media_bangumi’的值即三个番剧结果,可依次提取三个番剧结果的相关信息,其中media_id就是番剧页面链接中的md后面的值。 https://www.bilibili.com/bangumi/media/md2576

随后即可正则匹配获取相关的链接。

完整代码如下:

def up_bilibili(name_s): recent_url = "https://search.bilibili.com/api/search?search_type=all&keyword=%s"%(name_s) # 最近更新 items=json.loads(requests.get(recent_url).text)[u'result'] itemss=items['media_bangumi'] for i in itemss: name=i['title'] name_g=re.split(r'<[^>]*>',name) name_k='' for each in name_g: name_k=name_k+each link_id=i['media_id'] print name_k,':','https://bangumi.bilibili.com/bangumi/media/md%s'%(link_id)
转载请注明原文地址: https://www.6miu.com/read-2800249.html

最新回复(0)