爬B站排行前一百视频信息

10 篇文章 0 订阅
1 篇文章 0 订阅

写在前面:

这是一篇关于b站的爬虫。
仅代表个人练习之作。欢迎大家讨论。
练习是个过程,提升个人能力是目的。
最近接触了爬虫之后,一时手痒,打算迈开第一步,至于为什么要爬b站,原因就不解释了。
##1. 准备工作
开发环境个人选择Anaconda,原因是库真的好安装。
anaconda
安装库
本文里面用到的库非常简单,就两个。自己装一下就行。
(顺便吐槽下pycharm,真的难。。。也可能是我不习惯。)

from bs4 import BeautifulSoup
from urllib import request

找到bilibili的网站:https://www.bilibili.com/ranking?spm_id_from=333.334.banner_link.1
打开是这个样子的
排行图
按F12看看
F12图
很快就能找到我们需要的东西,大概层级(为何MD这块不显示?)

graph LR
body-->div.app
div.app-->div.b-page-body  
div.b-page-body-->div.main-inner
div.main-inner-->div.rank-container
div.rank-container-->div.rank-body
div.rank-body-->div.rank-list-wrap
div.rank-list-wrap-->ul.rank-list

结构图
我想取这里面的东西:
内容
初步的想法是输出:
排名是:Num
URL地址是:XXXX
视频名字是:XXXX
播放量:XXX
收藏数:XXX
作者:XXX
开工。

代码工作:

这里我用的是BeautifulSoup这个包,别问,问就是其他不会。

headers = {
    'X-Requested-With': 'XMLHttpRequest',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36'
                  '(KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
}      
url='https://www.bilibili.com/ranking?spm_id_from=333.334.banner_link.1'
req = request.Request(url, headers = headers)    
X-Requested-With

加上’X-Requested-With’:‘XMLHttpRequest’
返回数据是json
不加,返回数据是普通html文本
可以用来判断客户端的请求是Ajax请求还是其他请求。。

User-Agent

User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
常见 User-Agent 大全
关于取标签这里,我用的是beautifulsoup的selector。
这块有CSS选择器,过滤器find_all(),find(),等等,我也在学习中,同时后续附上的代码大家可以看到,我做了很多尝试,可能是因为个人能力问题,效果都不太好。如果诸位有更好的,也希望能与我分享。
PS:作为一个程序员,记得写注释。。。。
很简短,结果跑出来了
result
但是有一个问题:
就是关于img这块,我不知道b站是做了什么处理吗?我爬不到这个字符串。
img
图片的src=//i2.hdslb.com/bfs/archive/9b39ce7334535062122f0f9c9236f48e88c79ff4.jpg@114w_70h.webp
这段复制到浏览器里面是可以直接看的。
image.png
希望后续我能解决。

代码git地址:

Code
因为本人能力有限,难免有理解不足的地方,也欢迎大家留言讨论,或者直接找我沟通。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值