爬取华农兄弟哔哩哔哩所有视频信息

页面如下

通过网络流分析,找到了我们需要找的文件

而通过下图能够得到对应的json格式的页面

然后就可以进行爬取了


import requests
import json
import time
import csv

def parse_url(html):
    try:
        #加载json字符串
        reply_data = json.loads(html)
    except:
        print("error")
    
    commentlist = []
    hlist = []
 
    hlist.append("序号")
    hlist.append("名字")
    hlist.append("性别")
    hlist.append("时间")
    hlist.append("评论")
    hlist.append("点赞数")
    hlist.append("回复数")
    #获取数据
    num_video = len(reply_data["data"]["list"]["vlist"])
    for i in range(num_video):
        video = reply_data["data"]["list"]["vlist"][i]
        #print(comment)
        rlist = []

        comment_num = str(video["comment"])        #评论数
        ctime = str(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(video['created'])))   #发表时间
        time_length = str(video["length"])        #视频长度
        play = str(video["play"])                         #播放量
        video_review = str(video["video_review"])         #弹幕数
        title = str(video["title"])                       #标题     
        #写入
        writer.writerow([ctime,title,time_length,play,comment_num,video_review])
        
def fetch(url):
    headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
    }
    try:
        res = requests.get(url,headers = headers)
        html = res.text
        return html
    except:
        print("error")
    
if __name__ == "__main__":
    file = open("video.csv","a",encoding="utf-8",newline="")
    writer = csv.writer(file)
    
    for page in range(1,11):
        #动态生成链接
        url_ = "https://api.bilibili.com/x/space/arc/search?mid=250858633&tid=0&ps=30&pn={page}"
        url = url_.format(page = page)
        #获取对应的json字符串
        html = fetch(url)
        #获取相关数据
        parse_url(html)
        #每爬取5个页面睡眠1秒
        if(page % 5 == 0):
            time.sleep(1)
    
    file.close()

最终结果如下所示:

之后就可以对播放量,弹幕数量,评论数等等做排行了,包括可以做线性分析,通过设置变量以及噪声,从而找到播放量,评论数和弹幕数之间的近似的线性关系

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值