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

写在前面:

这是一篇关于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
因为本人能力有限,难免有理解不足的地方,也欢迎大家留言讨论,或者直接找我沟通。

发布了29 篇原创文章 · 获赞 4 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_33083551/article/details/100172797