[Python] axaj异步加载数据爬虫,获取B站UP主所有视频信息保存到数据库——每周一个爬虫小教程系列
作者:精品下载站 日期:2020-08-18 00:00:00 浏览:84 分类:编程开发
这次要爬取的网页是B站里面的UP主的投稿视频页面,这次以教父的的账号来做个示范。
网址:https://space.bilibili.com/482165792/video
这篇文章的标题是ajax异步加载的数据爬取,这与平时的有什么区别呢?
通常的爬虫是将网页源码下载下来,然后利用xpath或者其他一些方式,将有用的数据提取出来,但是如果下载之后没有看到任何数据呢?
就像这样子:
这个时候就说明这个网站可能是ajax异步加载的数据了,而不是后端直接渲染出来的。
就个人而言,是比较喜欢ajax的,因为这样的话就可以直接找到数据的接口了,提取数据直接用json当字典就可以解析出来了。
回到浏览器,在视频页面F12,进入Network,选择XHR(XMLHttpRequest),这时候我们点击第二页。
这时候我们就可以看到增加了几条东西。
一条一条点开看下,只要看Preview就可以了,因为如果是ajax渲染的话,请求返回来的肯定会有视频数据。
第一个就是了。
将data展开。可以看见有两个list,tlist和vlist,大概意思应该是投稿类型的列表和视频列表了吧
于是我们再展开vlist看看,这里面不仅有标题,还有描述,av号和bv号以及播放量和视频长度
这两条数据对应的也就是教父的第一个和第二个视频
这样子教父的接口就找到了,然后打开Python开始写代码。
在这里可以看到这次请求的URL和请求方式等,我们将其全部转移到Python之中。
我们分析一下这个URL加了哪些参数
mid:482165792 #这个对比可以发现是教父的ID,也就是说只要修改这个值就可以获取其他UP的视频信息了
ps:30 #根据实验,发现这个就是每页获取多少条视频数据了
tid:0 #好像不知道
pn:1 #page number?就是翻也吧
keyword: #关键词?
order:pubdate #排序方式,发布时间
jsonp:jsonp #返回json格式
不得不说,B站对于爬虫新手还是很友好的,没加任何反爬机制,直接请求就可以获取到数据
然后加个循环,获取一下所有页数的视频。
然后为了更清晰的展示,我们将数据清洗一下。
#-*-coding:utf-8-*- """ ------------------------------------------------- @Author:Lan @Blog:www.lanol.cn @Date:2020/8/18 @Description:I'minchargeofmyCode ------------------------------------------------- """ importrequests foriinrange(1,12): url=f'https://api.bilibili.com/x/space/arc/search?mid=482165792&ps=30&tid=0&pn={i}&keyword=&order=pubdate&jsonp=jsonp' res=requests.get(url).json()['data']['list']['vlist'] forjinres: print('视频标题',j['title'],'AV号',j['aid'],'播放量',j['play'],'视频时长',j['length'])
然后我们建立一个表格,将其保存下来。
#-*-coding:utf-8-*- """ ------------------------------------------------- @Author:Lan @Blog:www.lanol.cn @Date:2020/8/18 @Description:I'minchargeofmyCode ------------------------------------------------- """ importrequests withopen('JiaoFuMvInfo.csv','a+',encoding='utf8')asf: f.write('视频标题,AV号,BV号,播放量,视频时长,视频简介,视频链接 ') foriinrange(1,12): url=f'https://api.bilibili.com/x/space/arc/search?mid=482165792&ps=30&tid=0&pn={i}&keyword=&order=pubdate&jsonp=jsonp' res=requests.get(url).json()['data']['list']['vlist'] forjinres: title=j['title'].replace(',',',') avId=j['aid'] bvId=j['bvid'] play=j['play'] length=j['length'] des=j['description'].replace(',',',').replace(' ','') url=f'https://www.bilibili.com/video/{j["bvid"]}' f.write(f"{title},{avId},{bvId},{play},{length},{des},{url} ") print('视频标题',j['title'],'AV号',j['aid'],'播放量',j['play'],'视频时长',j['length'])
还可以结合我博客以前的教程,将这些数据做一些词云图等,还可以去获取一些喜欢的UP主的视频
然后我顺便写了个获取所有B站用户的信息,为了和谐就只是单纯的循环了
猜你还喜欢
- 03-29 [编程相关] Winform窗体圆角以及描边完美解决方案
- 03-29 [前端问题] has been blocked by CORS policy跨域问题解决
- 03-29 [编程相关] GitHub Actions 入门教程
- 03-29 [编程探讨] CSS Grid 网格布局教程
- 10-12 [编程相关] python实现文件夹所有文件编码从GBK转为UTF8
- 10-11 [编程算法] opencv之霍夫变换:圆
- 10-11 [编程算法] OpenCV Camshift算法+目标跟踪源码
- 10-11 [Python] python 创建 Telnet 客户端
- 10-11 [编程相关] Python 基于 Yolov8 + CPU 实现物体检测
- 03-15 [脚本工具] 使用go语言开发自动化脚本 - 一键定场、抢购、预约、捡漏
- 01-08 [编程技术] 秒杀面试官系列 - Redis zset底层是怎么实现的
- 01-05 [编程技术] 《Redis设计与实现》pdf
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[短剧合集] 2025年06月2日 精选+付费短剧推荐39部
[软件合集] 25年6月2日 精选软件18个
[软件合集] 25年6月1日 精选软件15个
[短剧合集] 2025年06月1日 精选+付费短剧推荐59部
[短剧] 2025年05月31日 精选+付费短剧推荐58部
[软件合集] 25年5月31日 精选软件66个
[电影] 黄沙漫天(2025) 4K.EDRMAX.杜比全景声 / 4K杜比视界/杜比全景声
[风口福利] 短视频红利新风口!炬焰创作者平台重磅激励来袭
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[美图] 2W美女个美女小姐姐,饱眼福
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag