zoukankan      html  css  js  c++  java
  • Python爬虫一爬取B站小视频源码

    如果要爬取多页的话 在最下方循环中 填写好循环的次数就可以了

    项目源码

     1 from fake_useragent import UserAgent
     2 import requests
     3 import time
     4  
     5 ua=UserAgent()
     6  
     7  
     8 def downloader(url, path):
     9     start = time.time()   # 开始时间
    10     size = 0
    11     headers = {
    12         'User-Agent':ua.random
    13     }
    14     response = requests.get(url, headers=headers, stream=True)   # stream 属性必须带上
    15     chunk_size = 1024    # 每次下载的数据大小
    16     content_size = int(response.headers['content-length'])   # 总大小
    17     if response.status_code == 200:
    18         print('[文件大小]:%0.2f MB' % (content_size / chunk_size / 1024))   # 换算单位
    19         with open(path, 'wb') as file:
    20             for data in response.iter_content(chunk_size=chunk_size):
    21                 file.write(data)
    22                 size += len(data)   # 已下载的文件大小
    23                 print('
    ' + '[下载进度]:%s%.2f%%' % ('>' * int(size * 50 / content_size), float(size / content_size *
    24                                                                                              100)), end=" ")
    25     end = time.time()    # 结束时间
    26     print('
    ' + '视频下载完成!用时%.2f秒' % (end - start))
    27  
    28  
    29  
    30 def The_URL(page):
    31     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)
    32     headers={
    33         'User-Agent':ua.random
    34     }
    35     sponse=requests.get(URL,headers=headers).json()
    36     item=sponse.get('data').get('items')
    37     for i in item:
    38         ite=i.get('item')
    39         #视频标题
    40         Video_name=ite.get('description')
    41  
    42         #发布日期
    43         Release_time=ite.get('upload_time_text')
    44  
    45         #视频下载地址
    46         Video_download_link=ite.get('video_playurl')
    47  
    48         #视频作者
    49         The_name=i.get('user').get('name')
    50  
    51         try:
    52             print('当前下载的是:%s'%Video_name)
    53             downloader(Video_download_link,path='%s.mp4'%Video_name)
    54         except Exception as e:
    55             print(e.args)
    56  
    57 for i in range(0,100):
    58     i=i*10+1
    59     The_URL(i)

    初学者对Python的概念模糊不清的,Python能做什么,学的时候该按照什么线路去学习,学完往哪方面发展,想深入了解,详情可以复制有道云笔记链接到浏览器打开了解:http://note.youdao.com/noteshare?id=e4fa02e7b56d7909a27674cdb3da08aa

    学习视频资料、开发工具等都有免费分享,还有专业的老师答疑

  • 相关阅读:
    PO-审批设置
    DIS-接收方式设置入口
    网约车
    汽车租赁
    共享单车
    共享充电宝
    佛教四大名山|道教四大名山|五岳|名山
    我读过的诗词文章书籍
    我看过的电影
    redis异常解决:jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set
  • 原文地址:https://www.cnblogs.com/ITbiancheng/p/12258682.html
Copyright © 2011-2022 走看看