分享一个B站爬虫(爬取视频信息相关数据)

举报
bigsai 发表于 2021/02/02 23:59:30 2021/02/02
【摘要】 前言 严寒酷暑,晚上进入理发店准备剪头时翻开班群消息。 勾起了我的兴趣,理发店人有点小多,回去瞅瞅吧。因为知道B站技术还是不错的。可能有难度。 分析 抱着看一看,玩一玩的态度,开始B站分析之旅。由于时间精力有限,不做太详细说明。B站的信息。第一想到肯定不可能直接渲染,只有比较old的网站现在才会渲染到html。我想他的数据肯定时js渲染或者a...

前言

  • 严寒酷暑,晚上进入理发店准备剪头时翻开班群消息。
  • 勾起了我的兴趣,理发店人有点小多,回去瞅瞅吧。因为知道B站技术还是不错的。可能有难度。

分析

  • 抱着看一看,玩一玩的态度,开始B站分析之旅。由于时间精力有限,不做太详细说明。
  • B站的信息。第一想到肯定不可能直接渲染,只有比较old的网站现在才会渲染到html。我想他的数据肯定时js渲染或者ajax渲染进去的。然而,换页发现url会变化,并且xhr没有我们想要的数据。虽然url会变化但是查看源码依然找不到想要的数据。
    在这里插入图片描述
  • websocket 也没有传输数据。那么范围就肯定大概率在js里面了。一查找,数据果然藏在js里面。通过js的文件解析进行渲染。有点骚。
    在这里插入图片描述
  • 想要的数据应有尽有,只需要对文本进行分割即可获得一个json文件。问题来了。js参数那么多,是否有设置加密呢。点了两个发现有的参数确实会变化
    在这里插入图片描述
    在这里插入图片描述
  • 我不知道它是否会对我造成影响。简单搜搜参数,debug一下,发现好像没有什么特别需要的参数直接更改页数应该可以。我在浏览器测试了一下,参数删除丝毫不影响,如果影响也没时间研究加密就算了,ok,没问题。
    在这里插入图片描述

编写爬虫

好了。这个数据来源没加密,无cookie加密验证,很好搞,只需要根据专栏url,修改页数就ok。

import requests
from bs4 import  BeautifulSoup
import json
import urllib.parse
## 只需要更改page
url="https://s.search.bilibili.com/cate/search?callback=jqueryCallback_bili_&main_ver=v3&search_type=video&view_type=hot_rank&order=click&copy_right=-1&cate_id=17&pagesize=20&jsonp=jsonp&time_from=20190716&time_to=20190723&_=1"
data={'page':1}
for page in range(1,10): data['page']=page req=requests.get(url,data=data) res=req.text res=res.replace("jqueryCallback_bili_","") res=res[1:(len(res)-1)] res=json.loads(res) result=res['result'] for val in result: print(val['author'],'播放:',val['play'],'喜欢',val['favorites'],'review',val['review'])


  

在这里插入图片描述

  • 好了,存储那些就不是我的事了。大胆分析就ok,不算难,就是挺新的在js藏数据。
  • 迎关注我的个人公众号交流:bigsai

文章来源: bigsai.blog.csdn.net,作者:Big sai,版权归原作者所有,如需转载,请联系作者。

原文链接:bigsai.blog.csdn.net/article/details/97046887

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。