B 站真是个神奇的网站。找不到资料了,去 B 站逛一逛,保准有你满意的东西。
前几天写了个爬虫,用 path、re、BeautifulSoup 爬取的 B 站 python 视频,如果要爬取多页的话 在最下方循环中 填写好循环的次数就可以了
B 站真是个神奇的网站。找不到资料了,去 B 站逛一逛,保准有你满意的东西。
前几天写了个爬虫,用 path、re、BeautifulSoup 爬取的 B 站 python 视频,如果要爬取多页的话 在最下方循环中 填写好循环的次数就可以了
废话不多说直接上源码:
1 '''
2 在学习过程中有什么不懂得可以加我的
3 python学习交流扣扣qun,688244217
4 群里有不错的学习教程、开发工具与电子书籍。
5 与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容。
6 '''
7 from fake_useragent import UserAgent
8 import requests
9 import time
10
11 ua=UserAgent()
12
13
14 def downloader(url, path):
15 start = time.time() # 开始时间
16 size = 0
17 headers = {
18 'User-Agent':ua.random
19 }
20 response = requests.get(url, headers=headers, stream=True) # stream 属性必须带上
21 chunk_size = 1024 # 每次下载的数据大小
22 content_size = int(response.headers['content-length']) # 总大小
23 if response.status_code == 200:
24 print('[文件大小]:%0.2f MB' % (content_size / chunk_size / 1024)) # 换算单位
25 with open(path, 'wb') as file:
26 for data in response.iter_content(chunk_size=chunk_size):
27 file.write(data)
28 size += len(data) # 已下载的文件大小
29 print('\r' + '[下载进度]:%s%.2f%%' % ('>' * int(size * 50 / content_size), float(size / content_size *
30 100)), end=" ")
31 end = time.time() # 结束时间
32 print('\n' + '视频下载完成!用时%.2f秒' % (end - start))
33
34
35
36 def The_URL(page):
37 URL='http://api.vc.bilibili.com/board/v1/ranking/top?page_size=10&next_offset={}&tag=%E4%BB%8A%E6%97%A5%E7%83%AD%E9%97%A8&platform=pc'.format(page)
38 headers={
39 'User-Agent':ua.random
40 }
41 sponse=requests.get(URL,headers=headers).json()
42 item=sponse.get('data').get('items')
43 for i in item:
44 ite=i.get('item')
45 #视频标题
46 Video_name=ite.get('description')
47
48 #发布日期
49 Release_time=ite.get('upload_time_text')
50
51 #视频下载地址
52 Video_download_link=ite.get('video_playurl')
53
54 #视频作者
55 The_name=i.get('user').get('name')
56
57 try:
58 print('当前下载的是:%s'%Video_name)
59 downloader(Video_download_link,path='%s.mp4'%Video_name)
60 except Exception as e:
61 print(e.args)
62
63 for i in range(0,100):
64 i=i*10+1
65 The_URL(i)
综上就是这次的全部内容,多加练习继续加油!