简单的用Python爬一下Bzhan评论,实现翻页采集【附源码】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一.数据来源分析

  1. 明确需求: 明确采集的网站以及数据内容
    -网址: https: / /www. bilibili.com/ video/ BV12J411X7cD/
    -数据:评论相关内容
  2. 抓包分析: 浏览器自带工具(开发者工具) 抓包
  • 打开开发者工具:F12/右键点击检查选择network(网络)

  • 点击最新评论<栏 目>、或者是刷新网页/点击下一页/点击数据加载
    -通过关键字找到对应的数据内容
    -如何找到对应数据包地址:
    I.如果返回数据包比较少,可以选择一个一个数据包点击去查看数据
    在这里插入图片描述

    II.通过关键字去搜索找到对应数据包(极 力推荐)
    在这里插入图片描述
    数据包地址:https://api.bilibili.com/x/v2/reply/wbi/main

二.代码实现步骤

1.发送请求=》模拟浏览器对于urL发送请求

在这里插入图片描述
User-Agent: url 都在headers里方方法与Cookie一样

# 导入数据请求模块 < 需要安装 pip install requests>
import requests

# 模拟浏览器:请求头(字典)
headers = {
    "Cookie": "buvid3=9A2355CE-E6B3-DCAF-B575-9839FC979FA719500infoc; b_nut=1702901019; CURRENT_FNVAL=4048; _uuid=C99D1D5F-8FD9-6DB9-E31010-7D38210B986DD22387infoc; buvid4=EEE01603-48D1-866E-6EE9-E4571883993022010-023121812-; buvid_fp=1ac5190dd0cf1d0ae04f418fafa81b4b; rpdid=|(u~)RukJRk)0J'u~|km|u|k~; DedeUserID=506964705; DedeUserID__ckMd5=1840c278a76d6edc; bp_video_offset_506964705=876770101210120230; PVID=1; b_lsid=5321FB87_18C96037762; share_source_origin=copy_web; bsource=share_source_copylink_web; bili_ticket=eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MDM1ODMwNzAsImlhdCI6MTcwMzMyMzgxMCwicGx0IjotMX0.kfffdTm4Ttyn4GR7YgQ9UZjhIT4F885uOttcCV1MMJc; bili_ticket_expires=1703583010; SESSDATA=74d99460%2C1718875875%2C885a3%2Ac1CjBeIkflpw3PKL2vFAomqOEQyuARtJu9jzvNTqeNPfodxsJUEFbBCc3fkmatEyPT0-8SVnNSUXpsbkRoVTRkZjFGYjBYN2k1VmxqNmZEcHJWb1RvYVRrUlRVeWtvOXBodXlaLXN0MGFNY3JCT09taDBjckhhLWNHS0JCYXB2UWZhSFNUWGpjMGxnIIEC; bili_jct=660c419519ab53cbbcd4d1ee4129138d; sid=dpvx31cm",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
#请求网址
url = 'https://api.bilibili.com/x/v2/reply/wbi/main?oid=910839520&type=1&mode=2&pagination_str=%7B%22offset%22:%22%7B%5C%22type%5C%22:3,%5C%22direction%5C%22:1,%5C%22Data%5C%22:%7B%5C%22cursor%5C%22:937%7D%7D%22%7D&plat=1&web_location=1315875&w_rid=1aaa0be6343c16a5b7e072061fa193f0&wts=1703325678'
#发送请求
response = requests.get(url = url,headers=headers)

2.获取数据=》服务器返回的响应数据<整个返回的内容>

在这里插入图片描述
回忆下知识点

  • response.json()获取响应json数据
    <当你看到响应返回内容{}包裹起来的数据>
    response.text获取响应文本数据
    <html文件格式 其他内容>
  • response.content获取响应二进制数据
    <保存图片/音频/视频/特定格式文件 数据时候使用>

3.解析数据=》提取需要的数据

在这里插入图片描述

'''
3.解析数据 -> 提取需要的数据
字典取值:键值对取值
根据冒号左边的内容[],提取冒号右边的内容[]
'''
#查看数据所在列表
#print(json_data['data']['replies'])
#提取数据所在列表
replies = json_data['data']['replies']
# 提取每条数据内容:for循环遍历
for index in replies:
    #print(index)#查看数据每条内容
    #评论内容
    #print(index['content']['message'])#评论预览测试
    message = index['content']['message']#评论
    Like = index['like']  # 点赞
    name = index['member']['uname']  # 昵称
    sex = index['member']['sex']  # 性别
    Location = index['reply_control']['location']  # 属地
    time_desc =index['reply_control']['time_desc'] #发布时间
    dit = {
        '昵称':name,
        '性别':sex,
        'IP' :Location,
        '时间':time_desc,
        '评论' : message,
        '点赞': Like,

    }
    print(dit)

在运行各国这里插入图片描述

4.保存数据=》保存表格文件中

在这里插入图片描述

#保存数据
"创建文件对象,保存数据内容"""
f = open('data.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[

    '昵称',
    '性别',
    'IP',
    '时间',
    '评论',
    '点赞',


])
csv_writer.writeheader()

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

5.实现多页爬取

过滤掉多余的数据包显示
在这里插入图片描述
一般情况是寻找不同页的相同规律
在这里插入图片描述
发现主要的变化规律
在这里插入图片描述
pagination_str:
下一个参数,来自于上一页的响应数据里面
在这里插入图片描述

w_rid: 需要JS逆向
MD5(Ut + ct)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值