m0_72200036 2024-06-15 23:31 采纳率: 0%
浏览 2

b站个人主页中的播放输、获赞数、充电数怎么提取呀

b站个人主页中的播放输、获赞数、充电数怎么提取呀,b站个人主页中的播放输、获赞数、充电数怎么提取呀

img

img

img

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-15 23:31
    关注

    引自免费微信小程序:皆我百晓生

    要从B站个人主页提取播放数、获赞数和充电数,可以使用Python的requests库进行网络请求,以及BeautifulSoup库解析HTML。根据提供的信息,我们可以看到数据可能通过API接口返回,也可能直接在HTML页面中。这里提供两种方法:一种是通过解析API接口返回的数据,另一种是直接从HTML页面中提取。

    方法一:解析API返回的数据

    假设API返回的数据结构如你所展示的那样,可以通过如下方式解析:

    import json
    
    # 假设这是API返回的数据
    data = {
        "data": {
            "card": {
                "mid": 123456,
                "name": "用户名",
                "sex": "男",
                "face": "https://example.com/avatar.jpg",
                "fans": 10000,
                "attention": 5000,
                "sign": "个性签名",
                # 注意这里的键名可能与实际不符,需要根据真实数据调整
                "n-data-v": "播放数",
                "n-data-p": "获赞数"
            }
        }
    }
    
    # 解析数据
    try:
        id = data['data']['card']['mid']
        name = data['data']['card']['name']
        sex = data['data']['card']['sex']
        face = data['data']['card']['face']
        fans = data['data']['card']['fans']
        attention = data['data']['card']['attention']
        sign = data['data']['card']['sign']
        view = data['data']['card'].get('n-data-v', '未知')
        praise = data['data']['card'].get('n-data-p', '未知')
        
        print(f"id: {id}")
        print(f"姓名:{name}")
        print(f"性别:{sex}")
        print(f"头像:{face}")
        print(f"粉丝数:{fans}")
        print(f"关注数:{attention}")
        print(f"标题数:{sign}")
        print(f"播放数:{view}")
        print(f"获赞数:{praise}")
    except KeyError as e:
        print("无法解析响应数据")
    

    方法二:从HTML页面中提取

    对于HTML页面,可以使用BeautifulSoup库来解析并提取所需信息:

    import requests
    from bs4 import BeautifulSoup
    
    # 请求URL(替换成实际的B站个人主页URL)
    url = 'https://space.bilibili.com/123456'
    
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 提取充电数
    battery_element = soup.find("span", class_="elec-total-c-num")
    battery = battery_element.text if battery_element else '未知'
    
    # 提取获赞数和播放数
    praise_element = soup.find("p", class_="n-data-v", title=lambda x: "获赞" in x if x else False)
    view_element = soup.find("p", class_="n-data-v", title=lambda x: "播放数" in x if x else False)
    
    praise = praise_element.text if praise_element else '未知'
    view = view_element.text if view_element else '未知'
    
    print(f"充电数:{battery}")
    print(f"获赞数:{praise}")
    print(f"播放数:{view}")
    

    请注意,以上代码中的选择器和键名可能需要根据实际网页结构和API返回的数据结构调整。如果页面结构或API返回的数据格式有变化,可能需要相应地调整解析逻辑。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月15日

悬赏问题

  • ¥15 程序实在不会写,要秃了
  • ¥15 pycharm导入不了自己的包
  • ¥15 C#.net通过内网url地址获取文件并下载问题,浏览器postman可以正常下载,用程序不行
  • ¥15 本人本科机械,目前研一。没有深度学习基础,目前对研究生课题一片迷茫,请教各位!
  • ¥15 关于R语言单因素与多因素线性回归的平均值
  • ¥15 服务器清除BIOS之后引导不了
  • ¥15 CPLEX用OPL编写的混合整数线性优化问题。
  • ¥15 可以用EasyConnect连接实验室内网,但无法连接内网才能访问的服务器,为什么?
  • ¥15 前端预览docx文件,文件从后端传送过来。
  • ¥15 层次聚类和蛋白质相似度