小姐姐教你用爬虫抓取B站人类高质量男性求偶视频的弹幕,康康都在讨论什么!❤️

本文介绍了一个Python爬虫项目,用于抓取B站(哔哩哔哩)视频的评论数据。通过分析动态数据接口,提取评论内容、时间、作者性别及个性签名,并利用requests库和csv模块进行数据保存。在处理过程中,还涉及到请求头的设置以应对反爬策略,以及JSON数据的解析。最后,数据被保存到CSV文件中,便于进一步的数据分析。
摘要由CSDN通过智能技术生成

爬取数据目标

网站:bilibili image.png

效果展示

image.png

工具使用

开发工具:pycharm 开发环境:python3.7, Windows10 使用工具包:requests,threading, csv

重点学习内容

  • 常见请求头的反爬
  • json数据的处理
  • csv文件处理

项目思路解析

找到你需要采集的视频地址(我找的是小破站的一个高质量男性的视频) image.png 网址:https://www.bilibili.com/video/BV1po4y1C7Pa?from=search&seid=8340616883387402352

爬虫采集数据首先要找到对应的数据目标地址 可以明显看出当前的网页的评论数据是在不断变化的 需要找到对应的评论接口 习惯性的去找动态数据

image.pngimage.png

数据并没有在动态数据里 清空数据加载新的评论数据 触发加载条件

image.pngimage.png

加载的数据在all里 明确数据之后就好处理了 获取到对应的网页接口 通过requests发送网络请求

    url = 'https://api.bilibili.com/x/v2/reply/main?jsonp=jsonp&next={}&type=1&oid=9659814&mode=3&plat=1&_=1627974678383'.format(
        i)
​
    response = requests.get(url)
    print(response.text)

image.png

数据请求失败请求头没有做反爬策略 添加对应的ua,以及refere 主要是防盗链的请求头措施,在浏览器请求也是得不到数据的

image.png 获取到准确的数据 提取自己想要的数据信息

  • 评论的内容
  • 评论的时间
  • 评论的作者
  • 作者的性别
  • 作者的个性签名
  • (各位大佬可以根据自己的需求进行自动的采集数据)

处理json数据时要注意, json数据前有jQuery1720892078778784086_1627994582044 可以通过正则的方式进行匹配提取 这里我选择修改url的参数 讲网址的jQuery1720892078778784086_1627994582044进行删除 最终的网址是:

https://api.bilibili.com/x/v2/reply/main?jsonp=jsonp&next={}&type=1&oid=376402596&mode=3&plat=1&_=1627993394215

image.png 获取到数据后进行数据保存 数据保存在csv文件

def save_data(item):
    with open('小破站1.csv', "a", newline='', encoding="utf-8")as f:
        filename = ['content', 'ctime', 'sex', 'uname', 'sign']
        csv_data = csv.DictWriter(f, fieldnames=filename)
        csv_data.writerow(item)
​

简易源码分享

import csv  # 处理对应的csv文件


headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'
}


def save_data(item):
    with open('小破站高质量人类.csv', "a", newline='', encoding="gbk")as f:
        filename = ['content', 'ctime', 'sex', 'uname', 'sign']
        csv_data = csv.DictWriter(f, fieldnames=filename)
        csv_data.writerow(item)


def get_data(i):
    url = 'https://api.bilibili.com/x/v2/reply/main?jsonp=jsonp&next={}&type=1&oid=376402596&mode=3&plat=1&_=1627993394215'.format(
        i)

    response = requests.get(url, headers=headers).json()
    # print(response.content.decode('utf-8'))
    item = {}

    for data in response['data']['replies']:
        # print(data)
        # print(' ')
        item['content'] = data['content']['message'].replace('\n', '')
        item['ctime'] = data['ctime']  # 时间戳保存方便
        item['sex'] = data['member']['sex']
        item['uname'] = data['member']['uname']
        item['sign'] = data['member']['sign']
        print(item)
        save_data(item)


if __name__ == '__main__':
    for i in range(1, 300):
        # 发送网络请求
        get_data(i)

我是白又白i,一名喜欢分享知识的程序媛❤️

如果没有接触过编程这块的朋友看到这篇博客,发现不会的或者想要学习Python的,可以直接留言或者私我【非常感谢你的点赞、收藏、关注、评论,一键四连支持】

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值