b站学python_Python爬虫学习教程 bilibili网站视频爬取!【附源码】

python爬虫学习教程,万物皆可爬!每个技术大牛都是从基础慢慢的提升上去的,基础知识越深以后的发展越牛!学好python,才能玩转python,那到底怎么才能学好python?

通过爬取b站案例带领你快速掌握爬虫,掌握学习技巧~带你揭开编程最神秘的面纱,解决学习路上的迷惑·~

对于初学者在学习python过程中有不懂的或是缺少这方面学习教程的可以加一下我建的python技术的学习裙;九三七六六七五零九,一起学习。群里有相关开发工具,学习教程,每天还有专业的老司机在线直播分享知识与技术答疑解惑!

b_0_202004201534407773.jpg

项目源码

1 #!/usr/bin/env python

2 # -*- coding: utf-8 -*-

3 # @file : spider_bilibili_v2.py

4 # @author: 未衬

5

6 # 它可以模拟浏览器向网站发送一个请求[命令]

7 import requests

8

9 '''

10 编写爬虫的过程中 有两种写法

11

12 基于html去分析网页数据并删选

13 因为有些同学没有接触过前端 可能看不懂前端代码

14

15 ** 使用浏览器去分析这个网站的接口 [api] 找到它之后利用

16 requests去请求这个api 拿到api的数据[json] 字典 基本数据结构

17 利用字典的特性去获取字典中的数据并下载

18

19

20 json

21

22 requests

23

24 mysql

25 网页选择器

26 xpath

27 bs4

28

29 pyquery

30

31 scrapy

32 公司开发爬虫是基于框架去实现功能的

33 敏捷开发 快速

34 安全 信任的 能解决公司大多数的爬虫问题

35

36 redis

37 分布式系统

38 scrapy-redis 分布式爬虫

39 在多个服务器上部署多个爬虫去爬取同一目标

40 redis 快

41 '''

42

43

44 # 去获取api 利用requests去访问这个接口 模拟浏览器

45 # 禁止非浏览器访问的代码 一律禁止访问

46

47 # 400 403 全是错误 访问错误 哔哩哔哩这家公司导致

48 # 防止爬虫去过度的向服务器发请求 哔哩哔哩的后台服务器会出现过载的情况

49

50 def get_json(url):

51 # 伪装成浏览器向这个接口拿数据 作用域

52 headers = {

53 'user-agent':

54 'mozilla/5.0 (x11; linux x86_64) applewebkit/537.36 (khtml, like gecko) chrome/69.0.3497.100 safari/537.36'

55 }

56

57 # 分析api这个链接

58 # 在api中 会有一些关键字

59 # 如果这些关键字改变的话 那它返回的值也是不一样的

60

61 params = {

62 'page_size': 10,

63 'next_offset': str(num),

64 'tag': '今日热门',

65 'platform': 'pc',

66 }

67

68

69

70 try:

71 # 获取api的所有数据

72 html = requests.get(url, params=params, headers=headers)

73 return html.json()

74 except baseexception:

75 print('请求失败...')

76

77

78 def downloader(url, path):

79 # 初始化参数 当你在下载视频的时候 0kb开始一直到这个视频的总大小 在下载之前我们要定义这个视频

80 # 大小的参数

81 size = 0

82

83 # 伪装成浏览器向这个接口拿数据

84 headers = {

85 'user-agent':

86 'mozilla/5.0 (x11; linux x86_64) applewebkit/537.36 (khtml, like gecko) chrome/69.0.3497.100 safari/537.36'

87 }

88

89 # 取变量名一定见名起意

90 response = requests.get(url, headers=headers, stream=true)

91

92

93 # socket 做下载 io流 每次下载的数据大小 以1024作为一个节点

94 chunk_size = 1024

95

96 # 视频总大小 在python中是字典格式

97 content_size = int(response.headers['content-length'])

98 print(content_size)

99

100 if response.status_code == 200:

101 print('[文件大小]: %0.2f mb' % (content_size / chunk_size / 1024))

102

103 with open(path, 'wb') as file:

104 # 迭代响应数据

105 for data in response.iter_content(chunk_size=chunk_size):

106 file.write(data)

107 size += len(data)

108

109 # 入口函数

110 if __name__ == "__main__":

111 for i in range(10):

112 url = 'http://api.vc.bilibili.com/board/v1/ranking/top?'

113 # 翻页的值 动态的 11 21 31

114 num = i * 10 + 1

115

116 html = get_json(url)

117 infos = html['data']['items']

118

119 for info in infos:

120 # 小视频的标题

121 title = info['item']['description']

122

123 # 小视频的下载链接

124 video_url = info['item']['video_playurl']

125

126 print(title)

127

128 try:

129 downloader(video_url, path='./视频/%s.mp4' % title)

130 print('下载成功...')

131

132 except baseexception:

133 print('下载失败...')

134

135

136 '''

运行结果

b_0_202004201534406174.jpg

代码不要直接复制,要自己动手敲,学习python一定要多动手!

590066.html

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值