Python实现批量采集美女视*频 <无水印>

news2024/11/28 12:52:38

前言

大家早好、午好、晚好吖 ❤ ~

我给大家准备了一些资料,包括:

2022最新Python视频教程、Python电子书10个G

(涵盖基础、爬虫、数据分析、web开发、机器学习、人工智能、面试题)、Python学习路线图等等

直接在文末名片自取即可!

环境使用:

  • Python 3.8

  • Pycharm

  • 谷歌浏览器

    谷歌驱动 —> 驱动版本要和浏览器版本最相近 <大版本一样, 小版本最相近>

模块使用:

  • requests >>> pip install requests

  • selenium >>> pip install selenium==3.141.0 <需要浏览器和浏览器驱动>

    默认安装 4.0版本 语法上面有点区别

  • re

  • json

卸载模块: pip uninstall selenium 卸载模块

安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令

基本思路流程: <通用>

一. 数据来源分析:

  1. 明确需求:

    • 采集什么数据内容

      I. 视频播放链接

      II. 视频标题

  2. 通过浏览器自带工具: 开发者工具, 进行抓包分析

    • 打开开发者工具: F12 / 鼠标右键点击检查选择network

    • 刷新网页: 让本网页数据内容重新加载一遍

    • 分析/找到 视频播放链接在哪里

      1. 选择 media <媒体文件> 可以直接看到 视频播放链接

      2. 通过搜索分析可以直接找到 视频播放链接/ 视频标题

二. 代码实现步骤:

  1. 发送请求, 模拟浏览器对于url地址发送请求

  2. 获取数据, 获取服务器返回响应数据

    开发者工具: response <网页源代码>

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

    • 视频标题

    • 视频播放链接

  4. 保存数据, 把视频内容保存本地文件夹

代码展示

导入模块

 导入数据请求模块
import requests
# 导入正则表达式
import re
# 导入json模块
import json
# 导入格式化输出模块
from pprint import pprint
# 导入自动化测试模块
from selenium import webdriver
# 导入时间模块
import time

创建浏览器对象, 实例化对象 自动打开浏览器

driver = webdriver.Chrome()

访问网址

“”“执行页面滚动的操作”“”

def drop_down():
    for x in range(1, 40, 4):  # 1 3 5 7 9  在你不断的下拉过程中, 页面高度也会变的
        time.sleep(1)
        j = x / 9  # 1/9  3/9  5/9  9/9
        # document.documentElement.scrollTop  指定滚动条的位置
        # document.documentElement.scrollHeight 获取浏览器页面的最大高度
        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        driver.execute_script(js)

可以直接定位元素提取内容

lis = driver.find_elements_by_css_selector('.Eie04v01')
for li in lis:
    url = li.find_element_by_css_selector('a').get_attribute('href')
  1. 发送请求, 模拟浏览器对于url地址发送请求

    • <Response [200]> 响应对象, 表示请求成功

      仅表示请求成功, 但是不代表一定得到数据<你想要的数据>

    • 没有得到我们想要的数据内容:

      原因: 是因为代码被服务器识别出来了, 是爬虫程序

      解决:把代码伪装成浏览器去发送请求 —> headers 请求头

    print(url)
    time.sleep(1)

确定请求链接 <视频播放页面>

模拟伪装

    headers = {
        # user-agent 用户代理 表示浏览器基本身份信息
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }

发送请求

    response = requests.get(url=url, headers=headers)
  1. 获取数据, 获取服务器返回响应数据

    开发者工具: response <网页源代码>

  2. 解析数据, 提取我们想要的数据内容

    • 视频标题

    • 视频播放链接

正则表达式, 你要获取什么数据, 直接复制过来, 然后要的数据内容用 (.*?) 表示, 会直接给返回相应的内容

.*? 表示可以匹配任意字符串, 除了\n换行符以外

提取标题

    title = re.findall('<title data-react-helmet="true">(.*?)</title>', response.text, re.S)[0]

替换一下特殊字符

    title = re.sub(r'[\/:*?"<>|\n]', '', title)

提取视频信息

    video_info = re.findall('<script id="RENDER_DATA" type="application/json">(.*?)</script', response.text)[0]

数据进行解码

    html_data = requests.utils.unquote(video_info)

转换数据类型

    json_data = json.loads(html_data)

键值对取值, 根据冒号左边的内容[键], 提取冒号右边的内容[值]

    video_url = 'https:' + json_data['41']['aweme']['detail']['video']['bitRateList'][0]['playAddr'][0]['src']
    print(title)
    print(video_url)
  1. 保存数据
    video_content = requests.get(url=video_url, headers=headers).content
    with open('video\\' + title + '.mp4', mode='wb') as f:
        f.write(video_content)

尾语 💝

有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง

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

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

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

相关文章

机器学习还能预测心血管疾病?没错,我用 Python 写出来了

全球每年约有1700万人死于心血管疾病&#xff0c;当中主要表现为心肌梗死和心力衰竭。当心脏不能泵出足够的血液来满足人体的需要时&#xff0c;就会发生心力衰竭&#xff0c;通常由糖尿病、高血压或其他心脏疾病引起。 在检测心血管疾病的早期症状时&#xff0c;机器学习就能…

nodejs+vue企业固定资产管理系统-vscode

目 录 摘 要 I 目 录 III 第一章 概述 1.1研究背景 1.2 开发意义 1.3 研究现状 1.4 研究内容 1.5 论文结构 第二章 开发技术介绍 2.5 B/S架构 3.1 可行性分析 3.1.1技术可行性 3.1.2操作可行性 3.1.3 经济可行性 3.1.4 运行可行性 3.2性能需求分析 3.4功能分析 第四章 系统设计…

轻量级的架构决策记录机制

作者&#xff1a;倪新明 ADR是一种性价比非常高的架构决策文档化实践&#xff0c;团队引入和实践成本很低&#xff0c;却能为团队带来极大收益&#xff01; 1 团队研发面临的问题 不论是在传统的IT行业&#xff0c;还是互联网行业&#xff0c;研发团队在架构决策层面或多或少…

在Arduino IDE上开发ESP32(离线安装SDK)

用过Arduino的朋友都知道&#xff0c;Arduino的整个生态强大得让你不能不服。大家所贡献出来的各种库让基于Arduino的开发虽然还没有变得无所不能&#xff0c;但也算是相当得心应手了。你所能想到的功能大体都能在网上找到对应的库和文章。可能是因为这个原因吧&#xff0c;所以…

Redis整理-未完成

目录 1. Redis安装 1.1 单机 1.2 主从 1.3 哨兵 1.4 集群 1.4.1 方式一 redis-cli --cluster命令 1.4.2 方式二 cluster meet/addslots/replicate 2. Redis配置 2.1 基本参数配置 2.2 持久化配置 2.3 内存策略设置 2.4 主从配置 2.5 哨兵配置 2.6 集群配置 2.6.…

吃透这份 “ 自动化测试 ” 核心技术栈,月薪30K还不是随便叫

为了帮助大家快速回顾学习自动化测试中的知识点&#xff0c;分享一下这些年来&#xff0c;我对于技术一些归纳和总结&#xff0c;和自己对作为一名 高级测试工程师需要掌握那些技能的笔记分享&#xff0c;希望能帮助到有心在技术这条道路上一路走到黑的朋友&#xff01; 一、L…

[附源码]Python计算机毕业设计SSM基于JAVA快递配送平台(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

语音怎么转换成文字?这几个实用方法分享给你

当我们在听一些流行的英文歌曲时&#xff0c;发现它没有附带翻译的时候&#xff0c;是不是常常听不懂歌曲的意思内容呢&#xff1f;面对这种情况应该怎么办呢&#xff1f;其实也不难&#xff0c;我们只需要利用软件来将歌曲转换成文字的格式就可以了&#xff0c;那你们知道如何…

分布式系统(交互、协作)

文章目录进程组织进程交互传染病协议反熵&#xff08;Anti-Entropy&#xff09;闲聊&#xff08;Gossiping&#xff09;P2P 路由Circular routingPastry应用层多播ESMScribe中间件通信协议RPCMOM进程协作有序组播基本组播FIFO 组播全排序组播定序者分布式协商因果序组播分布式互…

基于SSM框架的酒店管理系统

基于SSM框架的酒店管理系统开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 看每个等级模块&#xff1a;客白模块&#xff0c;屋工模垫&#xff0c;反怠管理员模垫 客户可…

如何实现采购管理流程的优化?

采购管理流程优化指的是一种整体方法&#xff0c;而不是个人主义的方法。它指的是利用人员、流程和技术来实现最佳价值创造的过程。采购优化的方法可以是&#xff1a;最初的范围界定&#xff0c;数据收集和分析&#xff0c;改进和实施以及跟进和监控。 理解采购管理流程优化 …

oracle学习篇(二)

oracle学习篇(二) 1添加约束 1.1 添加主键约束 1.1.1 语法 alter table 表名 add constraint 约束名 约束关键字 key(添加约束的字段);1.1.2 示例代码 alter table infos add constraint pk_stuid primary key(stuid);1.2 添加检查约束 1.2.1 语法 alter table 表名 ad…

[附源码]Node.js计算机毕业设计高校学生心理健康信息咨询系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

numpy.pad()函数详解

目录 函数定义&#xff1a; 示例讲解&#xff1a; 示例1.1 constant&#xff1a; 示例1.2 maximum 示例1.3 constant: 示例2.1 constant&#xff1a; 示例2.2 constant&#xff1a; 函数定义&#xff1a; numpy.pad()函数用于对Numpy数组进行填充。有时需要对Numpy数组进…

Docker 项目快速部署Flask项目

前言 打造 flask gunicron nginx Mysql 环境 nginx Mysql 使用docker 快速部署 使用 supervisor 对 gunicron 做监控 环境&#xff1a;centos7 &#xff0c;python3.7 flask 篇 flask 项目就不多赘述了。这里贴一下项目的目录&#xff0c;便于解释下面的命令参数。 运行…

​Word怎么转换成PDF格式?这三种方法教你如何转换

怎么把Word文档转换成PDF文件格式呢&#xff1f;相信小伙伴们在办公过程中会习惯使用Word文档来编辑文件&#xff0c;编辑好后如果需要发送文件的话会将文档转换成PDF格式来发送&#xff0c;原因就是PDF格式独有的兼容性和稳定性能够让我们的文件格式不会错乱&#xff0c;这也是…

深入理解Maven的全部配置

深入理解Maven的全部配置1. Introduction1.1 Big Data -- Postgres2. Install2.1 Maven Install2.2 Config Setting.xml2.3 Local Package Install Maven3. Project4.AwakeningMaven Document: https://maven.apache.org/. Maven Download: https://maven.apache.org/download.…

前端富文本设置的表格样式无法展示解决方案

当我们在富文本编辑器里编辑好文本后&#xff0c;发布一看&#xff0c;为什么编辑器预览的内容和实际保存后展示的内容不一致呢。这是因为&#xff0c;大部分编辑器本身会自带一些样式属性&#xff0c;而当获取富文本内容的时候往往是不带这些样式属性的&#xff0c;所以才导致…

【Java_GUI编程】--基本操作你要知道

文章目录一、组件和容器1、JFrame2、面板JPanel3、布局管理器流式布局&#xff08;从左到右&#xff09;东南西北中网格布局4、事件监听输入框事件监听键盘监听5、JDialog弹窗6、Icon、ImageIcon标签IconImageIcon7、按钮单选按钮复选按钮8、列表下拉框列表框9、文本框密码框文…

醉三皇酒特别的爱:孙子15年买酒送爷爷,爷爷90箱好酒赠重孙

小强没有万万没有想到&#xff0c;自己不仅会被裁员&#xff0c;而且还妻离子散&#xff0c;最敬爱的爷爷又意外去世。 一、惨遭裁员&#xff0c;一蹶不振 都说程序员是吃年轻饭的&#xff0c;以前不以为然&#xff0c;现在看着手里的裁员告知单&#xff0c;小强也不得不信了。…