【python】喜欢XJJ?这不得来一波大采集?

news2025/7/11 1:45:22

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

俗话说的好:技能学了~就要用在自己喜欢得东西上!!

这我不得听个话~我喜欢小姐姐,跳舞的小姐姐

这不得用python把小姐姐舞采集下来~嘿嘿嘿


完整源码、素材皆可点击文章下方名片获取此处跳转


知识点:

  1. 采集基本流程

  2. re正则表达式简单使用

  3. requests

  4. json数据解析方法

  5. 数据保存


采集网站:


开发环境:

  • Python 3.8

  • Pycharm


模块使用:

  • requests >>> pip install requests 第三方模块

  • re

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

如果出现爆红 可能是因为 网络连接超时 切换国内镜像源


基本流程(固定):

一. 数据来源分析

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

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

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

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

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

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

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

我想要获取播放地址 >>> 要得到数据包 >>> 获取ID

二. 代码实现步骤 发送请求 获取数据 解析数据 保存数据

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

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

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

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

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

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

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

  8. 多页数据采集


代码

(完整源码、素材皆可点击此处+获取)

导入模块

# 导入数据请求模块
import requests   # 第三方模块 pip install requests 需要自行安装
# 导入re正则表达式
import re   # 内置模块 不需要安装
# 导入格式化输出模块
import pprint   # 内置模块 不需要安装
  1. 发送请求, 对于舞蹈视频列表页面发送请求
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状态码表示请求成功, 但是不一定能够得到数据
  1. 获取数据, 服务器返回数据内容 response.text 获取响应文本数据
    # print(response.text)
  1. 解析数据, 提取我们想要数据内容 视频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)
        # 根据冒号左边的内容, 提取冒号右边的内容
  1. 解析数据
        title = json_data['data']['moment']['title']
        video_url = json_data['data']['moment']['videoInfo']['definitions'][0]['url']
  1. 保存数据 >>> 发送请求 并且获取数据
        """
        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)



尾语 💝

好了,今天的分享就差不多到这里了!

完整代码、更多资源、疑惑解答直接点击下方名片自取即可。

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇👇

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java web学生信息管理系统(jsp)

&#x1f95e;目录 &#x1f36c;1 概述 1.1课程设计目的 1.2预备知识 JAVAWeb&#xff1a; MySQL&#xff1a; JSP&#xff1a; 1.3实训的内容和要求 &#x1f36c;2 需求分析 2.1系统目标 2.2功能分析&#xff1a; 2.3开发环境&#xff1a; &#x1f36c;3 设计步…

大数据热点城市波动图案例【CSS3实现 + 原理分析 + 源码获取】

一&#xff1a;案例效果 本次案例我们分析一下数据可视化页面最常见的热点图是如何实现的&#xff0c;其原理并不复杂&#xff0c;只需要用到CSS3动画属性 animation 以及 keyframe 关键帧即可&#xff0c;重点是向外扩散的环如何布局比较合适&#xff0c;以及每个环怎么扩散何…

HTML 5标签搭建页面结构--1

本文标签: HTML基本语法 排版标签 媒体标签 链接标签 文章目录 前言 一、基础认识 1.认识网页 2.微博标准 3.web标准的构成 4.小结 二、HTML基本结构解读 2.HTML标签及结构 1.标签的结构: 2.排版标签: 2.文本格式化标签: 3.媒体标签: 1.图像相关标签: 2.图片标签的 title …

JavaScript-百炼成仙(第1节掌握JavaScript基础1.1-1.21)

文章目录1.1 第一章 初入宗门1.2 第二章 直接量1.3 第三章 数据类型1.4 第四章 数据类型扩展内容:1.5 第五章 基础考核1.6 第六章 何老1.7 第七章 对象数据类型1.8 第八章 对象的取值1.9 第九章 循环遍历的奥妙小结&#xff1a;For 循环1.10 第十章 对象内容的遍历1.11 第十一章…

30个题型+代码(冲刺2023蓝桥杯)(上)

愿意的可以跟我一起刷&#xff0c;每个类型做1~5题 &#xff0c;4月前还可以回来系统复习 目录 &#x1f34e;注意 &#x1f33c;前言 &#x1f33c;一&#xff0c;前缀和 &#x1f44a;&#xff08;一&#xff09;3956. 截断数组 &#x1f333;Time Limit Exceeded &a…

如何用python代码,更改照片尺寸,以及更换照片底色

前言 python浅浅替代ps&#xff1f;如何用代码来p证件照并且更换底色&#xff1f; 唉&#xff0c;有个小姐姐给我扔了张照片&#xff0c;叫我帮忙给她搞成证件照的尺寸还得换底色&#xff0c;她说自己忙的很 可惜电脑上没有ps只有pycharm&#xff0c;没得办法只能来试试看代…

没有关系的话,那就去建立关系吧

今天给大家分享一道链表的好题--链表的深度拷贝&#xff0c;学会这道题&#xff0c;你的链表就可以达到优秀的水平了。力扣 先来理解一下题目意思&#xff0c;即建立一个新的单向链表&#xff0c;里面每个结点的值与对应的原链表相同&#xff0c;并且random指针也要指向新链表中…

vite基础使用及相关配置

前言 这篇文章主要是记录前段时间公司里以vite构建的一个小项目&#xff08;前端界面不多&#xff0c;主要功能及相关配置是在后端&#xff09;&#xff0c;挺简单的几个小页面。 说到vite&#xff0c;之前虽然都有学习了解及demo尝试&#xff0c;但因为业务等其他各方面因素也…

uniapp开发APP从开发到上架全过程(一)

前端时间受朋友委托帮他开发了一款APP&#xff0c;综合考虑了下&#xff0c;没有上原生&#xff0c;使用了uniapp这一套技术栈来进行开发 uniapp是dcloud推出的一套跨端前端解决方案&#xff0c;可以通过一套代码生成小程序、安卓、IOS、H5等代码&#xff0c;对于中小项目来说…

vue通知提醒消息

目录 前言 一、Notification 二、Notification引用 1.全局引用 2.单独引用 三、参数说明 四、简单案例 五、项目实战 1、定义全局Notification。 2、Websocket实时接收通知。 3、消息通知 前言 最近有个项目需求就是在客户端的右上角要实时展示提醒消息&#xff0c;下…

vue3使用tinymce

1、安装相关依赖 npm install tinymce -S npm install tinymce/tinymce-vue -S2、下载中文包 地址 https://www.tiny.cloud/get-tiny/language-packages/ 3. 引入皮肤和汉化包 在项目public文件夹下新建tinymce文件夹&#xff0c; 将下载的汉化包解压到此文件夹 然后在node…

js延迟加载的六种方式

1. defer 属性 HTML 4.01 为<script>标签定义了defer属性。标签定义了defer属性元素中设置defer属性&#xff0c;等于告诉浏览器立即下载&#xff0c;但延迟执行标签定义了defer属性。 用途&#xff1a;表明脚本在执行时不会影响页面的构造。也就是说&#xff0c;脚本会…

论文阅读笔记《Nctr: Neighborhood Consensus Transformer for Feature Matching》

核心思想 本文提出一种融合邻域一致性的Transfomer结构来实现特征点的匹配&#xff08;NCTR&#xff09;。整个的实现流程和思想与SuperGlue相似&#xff0c;改进点在于考虑到了邻域一致性。邻域一致性在许多的传统图像匹配和图匹配任务中都有应用&#xff0c;他基于一个很重要…

【VUE前进之路】使用数据代理,计算属性与监视属性的妙用

1.数据代理 1.1什么是数据代理 通过一个对象代理对另一个对象中属性的操作&#xff08;读/写&#xff09; 1.Vue中的数据代理&#xff1a;通过vm对象来代理data对象中属性的操作&#xff08;读/写&#xff09; 2.Vue中数据代理的好处:更加方便的操作data中的数据 3.基本原理:…

ESLint 配置入门

大家好&#xff0c;我是前端西瓜哥&#xff0c;今天带大家了解 ESLint 的配置项。 ESLint 是一款检查 JavaScript 程序是否符合特定的规则的工具。比如字符串用单引号还是双引号&#xff0c;tab 缩进用 2 个空格还是 4 个空格还是其他&#xff0c;这些都可以用 ESLint 来规定。…

微信小程序---分包操作

有时候我们的小程序太大&#xff0c;首次打开小程序的时候回比较慢&#xff0c;这个时候我们可以试试分包操作。分包可以让用户在操作小程序的时候按需下载资源&#xff08;用户在进入某些页面的时候才去下载相应的资源&#xff0c;可以加快小程序的速度&#xff0c;优化用户体…

前端学习笔记(15)-Vue3状态管理store及Vuex的使用

1.状态管理 2.用响应式API做简单状态管理 3.Vuex基础 4.Vuex 核心概念 5. VuexsessionStorage实现数据存储1.状态管理理论上来说&#xff0c;每一个 Vue 组件实例都已经在“管理”它自己的响应式状态了。我们以一个简单的计数器组件为例&#xff1a;<script setup> impor…

最新小程序反编译详细教程,亲测可用

小程序因为触手可及、自带推广等的特点&#xff0c;自诞生以来&#xff0c;实现了很多的商业场景&#xff0c;同时取代了App的大部分市场份额。其实小程序的开发和网页开发类似&#xff0c;同样使用的是JavaScript开发的&#xff0c;属于前端&#xff0c;所以借助一些程序的帮助…

html+css唯美登录页面,代码提供(效果展示)

文章目录效果图所有代码效果图 所有代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" cont…

vue脚手架报错:“Component name “***“ should always be multi-word”解决方法

出现的问题 在我们写完脚手架运行 npm run serve 后控制台报错 页面报错 报错的原因 在为自定义组件命名的时候未按照官方代码规范进行命名&#xff0c;根据 ESLint 官方代码风格指南&#xff0c;除了根组件&#xff08;App.vue&#xff09;以外&#xff0c;其他自定义组件命名…