【Python爬虫案例】用python爬1000条哔哩哔哩搜索结果

一、爬取目标

大家好,我是 @马哥python说 ,一名10年程序猿。

今天分享一期爬虫的案例,用python爬哔哩哔哩的搜索结果,也就是这个页面:爬取目标

爬取字段,包含:
页码, 视频标题, 视频作者, 视频编号, 创建时间, 视频时长, 弹幕数, 点赞数, 播放数, 收藏数, 分区类型, 标签, 视频描述

部分爬取结果:部分数据

这里,我一共爬了30页,每页30条,共30*30=900条数据(当然,最大爬取页数可自定义放大)
下面,开始分析网页。
打开开发者模式,在页面搜索关键词,并进行翻页一次,如下:开发者模式

看到了result节点中的列表数据,就是我们要找到的视频数据,依次查看每个具体数据:json数据

json数据
分析到这里,就可以开发爬虫了。

二、讲解代码

首先,导入用到的库:

import requests  # 发送请求
import time  # 获取时间
import os
import pandas as pd  # 保存csv数据
import re  # 数据清洗

下面,开始发送请求。
请求地址在哪获取呢?请求地址

请求参数在Payload里面:请求参数

请求参数代码:

# 请求参数
params = {
    '__refresh__': 'true',
    '_extra': '',
    'context': '',
    'page': page,
    'page_size': 30,
    'from_source': '',
    'from_spmid': '333.337',
    'platform': 'pc',
    'highlight': '1',
    'single_column': '0',
    'keyword': v_keyword,
    'qv_id': 'dHavr2spEK3TphPa54klZ6svdhBYOlyP',
    'category_id': '',
    'search_type': 'video',
    'dynamic_offset': 24,
    'preload': 'true',
    'com2co': 'true',
}

请求头,在Request Headers里面:请求头

注意!cookie很重要,如果不传入cookie这个参数,会返回412错误码!

请求头代码:

# 请求头
headers = {'accept': 'application/json, text/plain, */*',
           'accept-encoding': 'gzip, deflate, br',
           'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
           # cookie必需,否则返回412
           'cookie': "换成自己的cookie",
           'origin': 'https://search.bilibili.com',
           'referer': 'https://search.bilibili.com/all?keyword={}&from_source=webtop_search&spm_id_from=333.1007&search_source=5&page=2&o=24'.format(
               v_keyword),
           'sec-ch-ua': '"Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"',
           'sec-ch-ua-mobile': '?0',
           'sec-ch-ua-platform      ': '"macOS"',
           'sec-fetch-dest': 'empty',
           'sec-fetch-mode': 'cors',
           'sec-fetch-site': 'same-site',
           'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
           }

发送请求:

# 向页面发送请求
r = requests.get(url, headers=headers, params=params)
print(r.status_code)  # 查看响应码

解析出result列表数据:

data_list = j_data['data']['result']
print('数据长度:', len(data_list))

定义空列表,并for循环追加数据,以视频标题title为例:

for data in data_list:
    title = re.compile(r'<[^>]+>', re.S).sub('', data['title'])  # 正则表达式清洗文本
    print('视频标题: ' + title)
    title_list.append(title)

其他字段同理,不再赘述。
最后通过pandas的to_csv,保存最终数据。

# 数据保存到csv文件
df.to_csv(v_out_file, encoding='utf_8_sig', mode='a+', index=False, header=header)

to_csv的时候需加上选项(encoding='utf_8_sig'),否则存入数据会产生乱码,尤其是windows用户!

三、同步讲解视频

https://www.zhihu.com/zvideo/1573636442722697216


四、完整源码

附完整源码:点击此处完整源码


原创作者: 马哥python说 持续分享python干货中!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:【Python爬虫案例】用python爬1000条哔哩哔哩搜索结果 - Python技术站

(0)
上一篇 2023年4月2日 下午4:28
下一篇 2023年4月2日

相关文章

  • 【Python数据分析案例】python数据分析老番茄B站数据(pandas常用基础数据分析代码)

    目录 一、爬取老番茄B站数据 二、python数据分析 1、读取数据源 2、查看数据概况 3、查看异常值 4.1、查看最大值(max函数) 4.2、查看最小值(min函数) 5.1、查看TOP3的视频(nlargest函数) 5.2、查看倒数3的视频(nsmallest函数) 6、查看相关性 7.1、可视化分析-plot 7.2、可视化分析-pyechart…

    2023年4月2日
    00
  • 详细剖析pyecharts大屏的Page函数配置文件:chart_config.json

    目录 一、问题背景 二、揭开json文件神秘面纱 三、巧用json文件 四、关于Table图表 五、同步讲解视频 5.1 讲解json的视频 5.2 讲解全流程大屏的视频 5.3 讲解全流程大屏的文章 一、问题背景 前情提要(第5.8章节): 【Python可视化大屏】全流程揭秘实现可视化数据大屏的背后原理! 在用Page函数拖拽组合完大屏时,点击页面左上角…

    2023年4月2日
    00
  • 【python爬虫案例】爬取微博任意搜索关键词的结果,以“唐山打人”为例

    目录 一、爬取目标 二、展示爬取结果 三、讲解代码 四、同步视频 4.1 演示视频 4.2 讲解视频 五、附:完整源码 一、爬取目标 大家好,我是马哥。 今天分享一期python爬虫案例,爬取目标是新浪微博的微博数据,包含: 页码, 微博id, 微博bid, 微博作者, 发布时间, 微博内容, 转发数, 评论数, 点赞数 经过分析调研,发现微博有3种访问方式…

    Python开发 2023年4月2日
    00
  • 【11个适合毕设的Python可视化大屏】用pyecharts开发拖拽式可视化数据大屏

    你好,我是@马哥python说,一枚10年程序猿。 一、效果演示 以下是我近期用Python开发的原创可视化数据分析大屏,非常适合毕设用,下面逐一展示:(以下是截图,实际上有动态交互效果哦) 以下大屏均为@马哥python说的个人原创,请勿转载。 1.1 影视剧分析大屏 1.2 豆瓣电影分析大屏A 1.3 豆瓣电影分析大屏B 1.4 58同城房源分析大屏 1…

    python 2023年5月10日
    00
  • 【拖拽可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!

    目录 一、设计方案 二、项目背景 三、电影爬虫 3.1 导入库 3.2 发送请求 3.3 解析页面 3.4 存储到csv 3.5 讲解视频 四、数据持久化存储 4.1 导入库 4.2 存入MySQL 4.3 讲解视频 五、开发可视化大屏 5.1 柱形图 5.2 饼图 5.3 词云图 5.4 数据表格 5.5 涟漪散点图 5.6 条形图 5.7 大标题 5.8…

    2023年4月2日
    00
  • 【2023微博签到爬虫】用python爬上千条m端微博签到数据

    一、爬取目标 大家好,我是 @马哥python说,一枚10年程序猿。 今天分享一期python爬虫案例,爬取目标是新浪微博的微博签到数据,字段包含:页码,微博id,微博bid,微博作者,发布时间,微博内容,签到地点,转发数,评论数,点赞数 经过分析调研,发现微博有3种访问方式,分别是: PC端网页:https://weibo.com/ 移动端:https:/…

    2023年3月31日
    00
  • 【爬虫+数据清洗+可视化分析】舆情分析哔哩哔哩”狂飙”的评论

    目录 一、背景介绍 二、爬虫代码 2.1 展示爬取结果 2.2 爬虫代码讲解 三、可视化代码 3.1 读取数据 3.2 数据清洗 3.3 可视化 3.3.1 IP属地分析-柱形图 3.3.2 评论时间分析-折线图 3.3.3 点赞数分布-直方图 3.3.4 评论内容-情感分布饼图 3.3.5 评论内容-词云图 四、演示视频 五、附完整源码 一、背景介绍 您好…

    2023年3月31日
    00
  • 【爬虫+数据清洗+可视化分析】舆情分析哔哩哔哩”阳了”的评论

    目录 一、背景介绍 二、爬虫代码 2.1 展示爬取结果 2.2 爬虫代码讲解 三、可视化代码 3.1 读取数据 3.2 数据清洗 3.3 可视化 3.3.1 IP属地分析-柱形图 3.3.2 评论时间分析-折线图 3.3.3 点赞数分布-直方图 3.3.4 评论内容-情感分布饼图 3.3.5 评论内容-词云图 三、演示视频 四、附完整源码 一、背景介绍 您好…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部