搞的谁还不会爬福利美女跳舞视频一样,用我这个方法非常简单。

大家好啊!经常听别人说爬虫玩的好,*****!其实没有这么恐怖,爬虫你一般都是采集公开的信息,所以不会像网络传言那样,大家只要遵守协议,不会出问题的。

 话说学编程语言的应该都是男孩子哈,所以今天这个大家应该会挺喜欢的吧,毕竟我都喜欢看票了的女孩子,更别说你们男孩子了!

这个喜欢吗?我都喜欢!

知识点:

    采集基本流程

    re正则表达式简单使用

    requests

    json数据解析方法

    数据保存

采集网站:

 开发环境

Python3.8

编辑器

pycharm

模块:

  • requests

  • re

安装模块:win + R 输入cmd 输入安装命令 pip install 模块名即可

如果爆红,估计是网络连接超时,因为它这个还是挺大的,自己加个镜像源就可以了!

整个案例的基本流程

 

一. 数据来源分析

    确定采集内容是什么? (目标网址, 网址里面数据)

    通过开发者工具进行抓包分析, 分析我们想要数据 通过请求那个url地址可以获得

    I. 通过分析可以知道 播放url地址是什么?

    II. 通过播放地址, 去分析找寻, 数据包是在哪?

    III. 通过两个数据包 请求参数对比, 可以知道 只要获取所有ID 就可以获取内容

    (图片id MP4ID 音乐ID 还是什么ID 都可以去列表页面获取)

    IV. 去分析 mp4ID可以从哪里获取 (一般情况都可以在列表页面获取)

我想要获取播放地址 >>> 要得到数据包 >>> 获取ID
二. 代码实现步骤 发送请求 获取数据 解析数据 保存数据

    发送请求, 对于舞蹈列表页面发送请求

    获取数据, 服务器返回数据内容

    解析数据, 提取我们想要数据内容 ID

    发送请求, 把ID传入到 数据包里面 发送请求

    获取数据, 服务器返回数据内容

    解析数据, 提取我们想要数据内容 标题 以及播放地址

    保存数据, 把内容保存本地

    多页数据采集

完整代码

导入模块

# 导入数据请求模块
import requests   # 第三方模块 pip install requests 需要自行安装
# 导入re正则表达式
import re   # 内置模块 不需要安装
# 导入格式化输出模块
import pprint   # 内置模块 不需要安装

发送请求, 对于舞蹈视频列表页面发送请求

for page in range(1, 11):
    print(f'正在爬取第{page}页的数据内容')
    url = f'https:// **** .com/g/all?set_id=51&order=hot&page={page}'
    # 爬虫是模拟浏览器对于服务器发送请求, 然后获取服务器返回数据内容
    # user-agent: 用户代理 表示浏览器基本身份信息  (一种简单反反爬手段)
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
    }
    # 通过requests模块里面get请求方式对于url地址发送请求, 并且携带上headers请求进行伪装, 最后用自定义变量response接收返回数据
    response = requests.get(url=url, headers=headers)
    # <Response [200]> 表示请求成功, 请求网址成功了  *** 200状态码表示请求成功, 但是不一定能够得到数据

获取数据, 服务器返回数据内容 response.text 获取响应文本数据

    # print(response.text)

解析数据, 提取我们想要数据内容 视频ID

    # 解析方式: css re xpath
    # <li data-vid="676382675">  想要数据 可以(.*?) 从response.text 里面去找寻这样数据内容
    # .*?  是可以匹配任意字符(除了\n换行符以外)  如果你只是单纯提取数字 最好用 \d+ 匹配一个或者多个数字
    video_ids = re.findall('<li data-vid="(\d+)">', response.text)  # 返回列表数据
    for video_id in video_ids:  # 通过for循环遍历 提取列表里面元素 一个一个提取
        # print(video_id)
  1. 发送请求, 把视频ID传入到视频数据包里面

  2. 发送请求获取数据, 服务器返回数据内容

        # f 字符串格式化方法 {} 占位符
        video_info = f'https:// **** .com/moment/getMomentContent?videoId={video_id}&uid=&_=1647433310180'
        json_data = requests.get(url=video_info, headers=headers).json()
        # print(json_data)
        # pprint.pprint(json_data)
        # 根据冒号左边的内容, 提取冒号右边的内容

解析数据

        title = json_data['data']['moment']['title']
        video_url = json_data['data']['moment']['videoInfo']['definitions'][0]['url']

保存数据 >>> 发送请求 并且获取数据

        """
        response.text   >>> 文本数据返回字符串数据
        response.json() >>> json字典数据
        response.content >>> 二进制数据
        """
        video_content = requests.get(url=video_url, headers=headers).content
        with open('video\\' + title + '.mp4', mode='wb') as f:
            f.write(video_content)
        print(title, video_url)

结语

今天就分享到这里了,完整代码,在线解答可以点击下方名片自动获取!

对下一篇大家想看什么内容,可在评论区留言哦!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/6284.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

不解释

&#xff08;1&#xff09;业务线下 VS 线上大陆 VS 全球整合-国际规则合规企业 VS 产业极速联动-社会化资源调度&#xff08;2&#xff09;手段P&#xff1a;人工预测 VS 时序预测D&#xff1a;管理者人工指派任务 VS 运筹学最优求解C&#xff1a;人工检查监督审批工作流 VS …

第十五章 镜像架构和规划 - 示例镜像架构和网络配置

文章目录第十五章 镜像架构和规划 - 示例镜像架构和网络配置示例镜像架构和网络配置在单个数据中心、机房或校园内镜像配置简单故障转移对具有 DR 的故障转移配对和报告 Ayncs 同构连接第十五章 镜像架构和规划 - 示例镜像架构和网络配置 示例镜像架构和网络配置 本节描述并说…

Python用re模块使用正则表达式

Python正则表达式是一种强大的工具&#xff0c;用于在字符串中查找和匹配特定模式的文本。在Python中&#xff0c;可以使用re模块来使用正则表达式。正则表达式是一种模式匹配语言&#xff0c;可以在文本中寻找特定模式的字符串。正则表达式可以用于验证输入&#xff0c;搜索和…

MYSQL——美团面试题

MYSQL——美团面试题 2023/3/27 美团二面 题目描述 Create table If Not Exists courses (student varchar(255), class varchar(255));insert into courses (student, class) values (A, Math); insert into courses (student, class) values (B, English); insert into co…

《C++那些事》之开启你的BenchMark项目

《C那些事》之开启你的BenchMark测试0.导语本节目标&#xff1a;完成一个BenchMark小项目!在平时开发中&#xff0c;如何测试自己的接口性能呢&#xff1f;C里面如何快速搭建一个BenchMark测试框架呢&#xff1f;本节将Step By Step开启BenchMark入门的第一课。1.项目结构我们以…

灵动微基于 MM32SPIN040C 为主控的无感方波水泵应用方案

水泵是一种运输液体或增压液体的机器。将原动机的机械能或其他外部动能量传递给液体&#xff0c;提高液体动能&#xff0c;主要用于运输含水、油、酸碱液、乳化液、悬乳液和液体金属的液体。 介绍一款适用于水泵的32位单片机——MM32SPIN040C。 RAMSUN推荐一款应用于水泵的MC…

从零开始实现一个C++高性能服务器框架----协程调度模块

此项目是根据sylar框架实现&#xff0c;是从零开始重写sylar&#xff0c;也是对sylar丰富与完善 项目地址&#xff1a;https://gitee.com/lzhiqiang1999/server-framework 简介 项目介绍&#xff1a;实现了一个基于协程的服务器框架&#xff0c;支持多线程、多协程协同调度&am…

倒计时组件:可视化如何自定义目标时间 / 数字倒数

倒计时组件支持通过自定义目标时间或倒数数字&#xff0c;在报表和大屏中展示时间倒数和数字倒数。 下面以Sugar BI为例&#xff0c;为大家展示 倒计时展示模式 倒计时组件提供「时间倒数」和「数字倒数」两种展示模式&#xff0c;效果如下&#xff1a; 默认为「时间倒数」模…

将本地项目上传到远程仓库的步骤

文章目录将本地项目上传到远程仓库的步骤1.进入想上传的项目文件夹2.初始化本地仓库3.添加该项目下的所有文件4.将文件添加到本地仓库中5.添加远程仓库6.将文件更新到远程仓库上7.将本地文件推送回到指定的远程仓库中将本地项目上传到远程仓库的步骤 1.进入想上传的项目文件夹…

简单介绍TensorFlow中关于tf.app.flags命令行参数解析模块

这篇文章主要介绍了TensorFlow中关于tf.app.flags命令行参数解析模块&#xff0c;具有很好的参考价值&#xff0c;希望对大家有所帮助。如有错误或未考虑完全的地方&#xff0c;望不吝赐教 tf.app.flags命令行参数解析模块 说道命令行参数解析&#xff0c;就不得不提到 python…

Spring的IOC和DI入门

1、相关概念 1.1、Spring来源 官网&#xff1a;Spring | Home Spring是一个分层的Java SE/EE应用一站式的轻量级开源框架。Spring核心是IOC和AOP。 Spring主要优点包括&#xff1a; 方便解耦&#xff0c;简化开发&#xff0c;通过Spring提供的IoC容器&#xff0c;我们可以将…

分布式事务问题

分布式事务问题 1、什么是分布式事务 一次课程发布操作需要向数据库、redis、elasticsearch、MinIO写四份数据&#xff0c;这里存在分布式事务问题。 什么是分布式事务&#xff1f; 首先理解什么是本地事务&#xff1f; 平常我们在程序中通过spring去控制事务是利用数据库…

【C++】一维数组练习案例 - 五只小猪称体重

目录 1、缘起 2、案例描述 3、代码 4、总结 1、缘起 最近在黑马程序员 UP 主那里学习 C 编程语言&#xff0c;学习到了【第44节】一维数组练习案例 - 五只小猪称体重 知识点。找出五只小猪中最重的小猪&#xff0c;这不就是基本算法中的 "求最大值算法" 嘛。 为…

ChatGPT相关核心算法

ChatGPT 的卓越表现得益于其背后多项核心算法的支持和配合。本文将分别介绍作为其实现基础的 Transformer 模型、激发出其所蕴含知识的Prompt/Instruction Tuning 算法、其涌现出的思维链能力、以及确保其与人类意图对齐的基于人类反馈的强化学习算法。 1.基于Transformer的预…

STM32F4_时钟系统精讲

目录 1. 什么是系统时钟 2. 时钟树 2.1 LSI 2.2 LSE 2.3 HSI 2.4 HSE 2.5 PLLCLK 2.6 SYSCLK 2.7 HCLK 2.8 PCLK1 2.9 PCLK2 2.10 RTC/AWU 3 SysTick定时器 3.1 为什么会有Systick定时器&#xff1f; 3.2 SysTick定时器的作用 3.3 SysTick定时器的寄存器 4.…

DAMA-CDGA/CDGP数据治理认证考试地点一般有哪些?

据目前数据统计&#xff0c;进行过DAMA-CDGA/CDGP数据治理认证考试的地区主要是一线城市及直辖市&#xff0c;主要有&#xff1a;北京、上海、广州、深圳、西安、杭州、成都、重庆、武汉、厦门、太原、甘肃、长沙等。&#xff08;*当所在城市报名人数达到25人以上方可增加考场开…

C++基本语法

C 程序可以定义为对象的集合&#xff0c;这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象&#xff0c;方法、即时变量。 对象 - 对象具有状态和行为。例如&#xff1a;一只狗的状态 - 颜色、名称、品种&#xff0c;行为 - 摇动、叫唤、吃。对象是类…

SpringBoot2基础入门 --- 了解自动配置原理

一、SpringBoot特点 1.1、依赖管理 父项目做依赖管理 依赖管理 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version> </parent>…

固定资产AFAB进行折旧选择页面的各个选项分别是什么意思?

固定资产AFAB进行折旧选择页面的“记账运行原因”的4个选项&#xff0c;及下面的各个选项分别是什么意思&#xff1f; 一、“记账运行原因”的4个选项&#xff1a; 1&#xff0c;计划内记账运行&#xff08;Planned posting run&#xff09;&#xff1a;上期折旧成功运行&…

测试---

1.加载测试专用属性 1.在启动测试环境时可以通过properties参数设置测试环境专用的属性 SpringBootTest(properties {"test.valuekllda"}) public class PropertiesTest {Value("${test.value}")private String msg; ​Testpublic void testPro(){System…