美文网首页
使用 Python 获取 B 站视频的播放量

使用 Python 获取 B 站视频的播放量

作者: 孙庚辛 | 来源:发表于2020-03-14 16:08 被阅读0次

    首先我们通过一个主题词进行视频搜索, 然后把找到的视频链接保存下来,里面有个视频的 id ,通过这个 id , 调用 B 站 api 接口可以获取视频的信息, 里面有视频的播放量信息。 尽量查的视频数量少一点哦, 给 B 站造成服务压力可不好。

    # -*- coding: utf-8 -*-
    
    import requests
    import json
    import urllib.request
    import zlib
    import os
    import re
    from bs4 import BeautifulSoup
    from urllib.parse import quote
    import time
    
    
    #<iframe src="//player.bilibili.com/player.html?aid=66494272&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
    
    headers = {
        "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"
    }
    
    def require_video(video_id):
        URL_VIDinfo = "http://api.bilibili.com/archive_stat/stat?aid=" 
        PARAMS = {"aid":video_id }
        VID_info = requests.get(url = URL_VIDinfo,params = PARAMS).json()
        print(VID_info)
        if(VID_info["message"] == "0"):
            hot_video = VID_info["data"]["view"]
            if hot_video != "--":
                return hot_video
    
            else:
                return -1
        else:
            return -1
     
    
    def get_aid(Keyword):
        print('searching, please wait......')
        f = open("hot_video.txt", "a")
        for page_num in range(1,2):
            time.sleep(1)
            search_url="https://search.bilibili.com/all?keyword=" + Keyword + "&page=" + str(page_num)
            search_url=quote(search_url,safe='/:?=&', encoding="utf-8")
            print(search_url)
            req = urllib.request.Request(url=search_url)
            req.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE")
            data=urllib.request.urlopen(req)
            search_html = data.read().decode("utf-8",'ignore')
            search_bsObj = BeautifulSoup(search_html,'html.parser')
            search_linkList = search_bsObj.findAll("a",{"class":"title"})
            count=len(search_linkList)
            print('found %s in this page' %count)
    
            for item in search_linkList:
                time.sleep(1)
                print('%s:%s' % (i,search_linkList[i]['title']))
                search_link=search_linkList[i]['href']
                search_link="http:"+search_link
                search_link=quote(search_link,safe='/:?=&', encoding="utf-8")
                print(search_link)
                index1 = search_link.find('av')
                index2 = search_link.find('?')
                if index1 and index2 and index1 > 4:
                    avid = search_link[index1 + 2: index2]
                    print(avid)
                    video_played_times = require_video(avid)
                    if int(video_played_times) >= 100000:
                        f.write(avid + "\n")
                
        f.close()
    
    
    
    def main():
        keyword = '舞蹈'
        get_aid(keyword)
    
    if __name__ == '__main__':
        main()
    
    

    相关文章

      网友评论

          本文标题:使用 Python 获取 B 站视频的播放量

          本文链接:https://www.haomeiwen.com/subject/hruwshtx.html