零基础如何学好python爬虫?之python爬取B站小视频

B 站真是个神奇的网站。找不到资料了,去 B 站逛一逛,保准有你满意的东西。

前几天写了个爬虫,用 path、re、BeautifulSoup 爬取的 B 站 python 视频,如果要爬取多页的话 在最下方循环中 填写好循环的次数就可以了

废话不多说直接上源码:

'''
在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,934109170
群里有不错的学习教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容。
'''
from fake_useragent import UserAgent
import requests
import time

ua=UserAgent()


def downloader(url, path):
    start = time.time()   # 开始时间
    size = 0
    headers = {
        'User-Agent':ua.random
    }
    response = requests.get(url, headers=headers, stream=True)   # stream 属性必须带上
    chunk_size = 1024    # 每次下载的数据大小
    content_size = int(response.headers['content-length'])   # 总大小
    if response.status_code == 200:
        print('[文件大小]:%0.2f MB' % (content_size / chunk_size / 1024))   # 换算单位
        with open(path, 'wb') as file:
            for data in response.iter_content(chunk_size=chunk_size):
                file.write(data)
                size += len(data)   # 已下载的文件大小
                print('\r' + '[下载进度]:%s%.2f%%' % ('>' * int(size * 50 / content_size), float(size / content_size *
                                                                                             100)), end=" ")
    end = time.time()    # 结束时间
    print('\n' + '视频下载完成!用时%.2f秒' % (end - start))



def The_URL(page):
    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)
    headers={
        'User-Agent':ua.random
    }
    sponse=requests.get(URL,headers=headers).json()
    item=sponse.get('data').get('items')
    for i in item:
        ite=i.get('item')
        #视频标题
        Video_name=ite.get('description')

        #发布日期
        Release_time=ite.get('upload_time_text')

        #视频下载地址
        Video_download_link=ite.get('video_playurl')

        #视频作者
        The_name=i.get('user').get('name')

        try:
            print('当前下载的是:%s'%Video_name)
            downloader(Video_download_link,path='%s.mp4'%Video_name)
        except Exception as e:
            print(e.args)

for i in range(0,100):
    i=i*10+1
    The_URL(i)

综上就是这次的全部内容,多加练习继续加油!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值