Python实现自动登录+获取数据

前言

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

Dy这个东西想必大家都用过,而且还经常刷,今天就来用代码,获取它的视频数据

如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码

环境使用

  • Python 3.8

  • Pycharm

模块使用

  • requests

  • selenium

  • json

  • re

一. 数据来源分析

  1. 明确需求

    明确采集网站以及数据内容

    网址:

    https://www.dy.com/user/MS4wLjABAAAAB0-gppwu15DtJJZmMpgUqakr7Jw_pmr7skR3IW6MwCQ?modal_id=7270865943398518050
    

    数据: 视频链接 / 视频标题

  2. 抓包分析

    通过开发者工具进行抓包分析

    I. 打开开发者工具: F12II. 刷新网页III. 找到数据链接
    

    视频链接:

    https://v26-web.dyvod.com/295eea512e6f187309e6181297ec185e/64e8a7f8/video/tos/cn/tos-cn-ve-15c001-alinc2/o8vKACOD9NSbaA3mnggzfIO5QAgkqHnGr7sAeB/?a=6383&ch=26&cr=3&dr=0&lr=all&cd=0%7C0%7C0%7C3&cv=1&br=609&bt=609&cs=2&ds=3&ft=bvTKJbQQqU-mfJ4ZPo0OW_EklpPiXV8zNMVJEdBqSpvPD-I&mime_type=video_mp4&qs=15&rc=NTg8NzpoNGY2aGU0N2k1PEBpajhuNTY6ZmhtbTMzNGkzM0AtMy4xY2E0Xi4xYDNjX15iYSM2bl5scjRvLWdgLS1kLWFzcw%3D%3D&btag=e00010000&dy_q=1692965337&l=20230825200856A1A3326D295C25055965
    

    IV. 通过关键字搜索, 找到链接对应数据包

    视频链接 / 标题 --> 来自于网页源代码<进行编码>

    数据包:

    https://www.dy.com/user/MS4wLjABAAAAB0-gppwu15DtJJZmMpgUqakr7Jw_pmr7skR3IW6MwCQ?modal_id=7270865943398518050
    

二. 代码实现步骤

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

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

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

  4. 保存数据, 保存视频数据

代码实现

发送请求

模拟浏览器: <可以直接复制>

  • response.text 获取响应文本数据

  • response.json() 获取响应json数据

  • response.content 获取响应二进制数据

我们使用requests.get()方法向指定的URL发送GET请求,并获取到响应的内容

'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
headers = {# User-Agent 用户代理, 表示浏览器基本身份信息'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
}
# 请求链接
url = 'https://www.dy.com/user/MS4wLjABAAAArgJe6h-DzQcvyZ1O71yXSdJFn19Tqq8lFCIffgy5SlhwYlkseK5aM5ETF8KoaGDK?modal_id=7270476649714421046&vid=7269532986553552140'
# 发送请求
response = requests.get(url=url, headers=headers)

解析数据

使用正则表达式来搜索和匹配HTML内容中的特定模式,以提取所需的数据。

调用re模块里面findall方法

re.findall(‘数据: 你需要的数据’, ‘数据源: 从什么地方获取数据’) --> 找到所有数据内容

'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
# 获取响应文本数据  获取网页源代码内容
html_data = response.text
# 提取标题
title = re.findall('video_title" content="(.*?)"/>', html_data)[0]
# 提取视频信息 <经过了编码>
video_info = re.findall('<script id="RENDER_DATA" type="application/json">(.*?)</script>', html_data)[0]
# 解码
info = requests.utils.unquote(video_info)
# 把完整json数据格式字符串, 转成字典数据类型
json_data = json.loads(info)
# 根据冒号左边的内容[键], 提取冒号右边的内容[值]
video_url = 'https:' + json_data['app']['videoDetail']['video']['bitRateList'][0]['playAddr'][0]['src']

保存数据

对于视频链接发送请求, 获取二进制数据内容, 保存本地文件夹

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)
print(video_url)
模拟登录

导入所需模块

# 自动化测试模块
from selenium import webdriver
# demo
from chaojiying import Chaojiying_Client
from password import account, password
# 动作链
from selenium.webdriver.common.action_chains import ActionChains

自动登录浏览器

'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
# 打开浏览器, 访问网站
driver = webdriver.Chrome()
driver.get('https://www.dy.com/user/MS4wLjABAAAAB0-gppwu15DtJJZmMpgUqakr7Jw_pmr7skR3IW6MwCQ')
# 延时
driver.implicitly_wait(10)
time.sleep(2)
# 获取验证码图片
img_label = driver.find_element_by_css_selector('.captcha_verify_container')
# 截图 保存验证码图片
img_label.screenshot('yzm.png')

调用

'''
python资料获取看这里噢!! 小编 V:qian97378,即可获取:
文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
# 调用 --> 帮助我们识别文字坐标
chaojiying = Chaojiying_Client(账号, 密码, '96001')
# 读取图片
im = open('yzm.png', 'rb').read()
result = chaojiying.PostPic(im, '9004')['pic_str']
for res in result.split('|'):x = res.split(',')[0]y = res.split(',')[-1]ActionChains(driver).move_to_element_with_offset(img_label, int(x), int(y)).click().perform()driver.find_element_by_css_selector('.captcha_verify_action div:last-of-type').click()
time.sleep(2)driver.implicitly_wait(10)
lis = driver.find_elements_by_class_name('Eie04v01')
for li in lis:video_id = li.find_element_by_css_selector('a').get_attribute('href').split('/')[-1]

代码运行结果展示

尾语

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

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

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

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

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

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

相关文章

c++ 获取时间 微秒

参考:https://juejin.cn/s/c%2B%2B%20%E8%8E%B7%E5%8F%96%E6%97%B6%E9%97%B4%20%E5%BE%AE%E7%A7%92 在 C 中获取当前时间的微秒数可以使用 头文件中的 std::chrono::high_resolution_clock 类。该类提供了高精度的计时功能&#xff0c;可以精确到纳秒级别。 以下是一个示例代…

js进阶笔记之构造函数

目录 一、构造函数 1、 创建对象 2、new执行过程 3、带参数构造函数 4、实例成员与静态成员 二、内置构造函数 1、Object静态方法 2、包装类型 3、Array 1、map方法 2、find方法 3、findIndex( ) 4、some与every 5、reverse() 6、reduce方法 7、forEach() …

wget 对整站内容进行爬取

如果你想对站点内容进行爬虫&#xff0c;还有一条最简洁的系统原生命令可以搞定&#xff1a; wget --random-wait -r -p -e robotsoff -U mozilla https://example.com/ 加上 -nv 或 --no-verbose 参数后&#xff0c;输出的内容会变得更加简洁&#xff1b; 加上 --accept-re…

DrugMAP: molecular atlas and pharma-information of all drugs学习

DrugMAP&#xff1a;所有药物的分子图谱和制药信息 - PMC (nih.gov) DrugMAP: the molecular atlas and pharma-information of drugs (idrblab.net) 构建了一个描述药物分子图谱和药物信息的新数据库&#xff08;DrugMAP&#xff09;。它提供了>30 000种药物/候选药物的相…

bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory

问题背景&#xff1a; 在linux上编译Qt时&#xff0c;遇到这个问题 “bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory” 问题原因&#xff1a; Qt的configure文件是在windows上写的&#xff0c;现在是在ubuntu上进行编译。而linux和windows在换…

数字化转型导师坚鹏:数字化时代银行网点厅堂营销5大难点分析

数字化时代银行网点厅堂营销存在以下5大难点&#xff1a; 1、识别难。识别有效的客户比较难&#xff0c;传统的厅堂识别主要依据客户的衣着气质等主管感受&#xff0c;判断客户是否为潜在中高端客户&#xff0c;提供相关服务。大堂经理主管识别与智能化系统识别相结合&#xf…

C++单调向量算法:132 模式解法三枚举1

本题不同解法 包括题目及代码C二分查找算法&#xff1a;132 模式解法一枚举3C二分查找算法&#xff1a;132 模式解法二枚举2代码最简洁C二分查找算法&#xff1a;132 模式解法三枚举1性能最佳C单调向量算法&#xff1a;132 模式解法三枚举1 分析 时间复杂度 2轮循环时间复杂…

如何选择适合的开源框架来构建微服务架构?

随着科技的飞速发展&#xff0c;云计算和大规模应用的需求日益显著&#xff0c;这促使微服务架构在软件开发领域中占据了主流地位。微服务架构的广泛应用为开发人员提供了灵活性、可伸缩性和高可用性&#xff0c;从而推动了快速的应用程序开发。然而&#xff0c;在构建微服务架…

NextJS开发:nextjs中使用CkEditor5

NextJS项目中需要使用CkEditor5作为富文本编辑器&#xff0c;按照官网React CkEditor5手册使用出现如下错误&#xff1a; node_modules/ckeditor/ckeditor5-react/dist/index.js (5:242) eval⨯ ReferenceError: self is not defined还是因为nextjs的服务器端渲染造成的错误&…

快速幂(c++,超级详细)

快速幂 如果我们打算求a^b, 我们可能会写一个for循环&#xff0c;乘以b次a&#xff0c;时间复杂度为O(b) 当b比较小的时候还可以运用&#xff0c;但是当b很大&#xff0c;比如b1000000,此时时间复杂度就显然很高了&#xff0c;我们需要对其进行优化 ———快速幂 开始之前&a…

JDBC快速入门

JDBC快速入门 PS&#xff1a;上传图片有点问题&#xff0c;我整理成了PDF格式&#xff0c;方便看图文。 今日目标 掌握JDBC的的CRUD理解JDBC中各个对象的作用掌握Druid的使用 1&#xff0c;JDBC概述 在开发中我们使用的是java语言&#xff0c;那么势必要通过java语言操作数据库…

【ARM AMBA AXI 入门 14 -- AXI 窄位传输 | 非对齐传输| 大小端传输】

请阅读【ARM AMBA AXI 总线 文章专栏导读】 文章目录 窄位传输 (Narrow Transfer)非对齐传输 (Unaligned Transfer)大小端传输 (Endianness Transfer)ARM AMBA AXI (Advanced eXtensible Interface) 是一个高性能、高带宽的总线接口,常用于连接高速微处理器核心与其它部件。在…

模拟电路总结

一、半导体器件 1.1 半导体的特性 导电性能介于导体和绝缘体之间。如&#xff1a;硅&#xff08;Si&#xff09;、锗&#xff08;Ge&#xff09; 1.1.1 本征半导体 纯净的、不含杂质的半导体 温度敏感&#xff1a;T0K时&#xff0c;绝缘&#xff1b;温度升高时&#xff0c;载流…

Thinkphp-商城项目之oss文件上传及web端直传

4.3头像上传 一般商城网站都会把文件上传到第三方云&#xff0c;例如阿里云(oss)&#xff0c;腾讯云(cos)&#xff0c;当然如果公司有足够的实力&#xff0c;可以自己部署一台文件服务器&#xff0c;用于文件的保存。 头像上传一般是用户在用户中心上传的&#xff0c;后台管理…

软件需求的三大层次,逐层细化的注意事项

需求逐层分解和转化是一个持续优化的过程&#xff0c;在这个过程中&#xff0c;我们需要明确软件需求的三大层次&#xff0c;从而帮助项目团队理解组织或客户的高层目标和期望&#xff0c;满足用户的期望和需求&#xff0c;有助于产品的系统设计和开发。 一、软件需求三大层次 …

【力扣的101夜】轮转数组

public void rotate(int[] nums, int k) { } 用 Syst.arraycopy 五个参数是 System.arraycopy(nums, length - step, temp, 0, step); nums&#xff1a;源数组&#xff0c;即要从中复制元素的数组。length - step&#xff1a;源数组的起始位置&#xff0c;即从哪个索引开始复…

坑惨啦!!!——符号冲突案例分析

背景 前段时间在北汽项目中&#xff0c;遇到了一个奇怪现象&#xff1a;程序启动之后&#xff0c;偶现运行一段时间后&#xff0c;crash&#xff0c;复现频率较高。困扰了大家较长时间。最终在和同事的不懈努力下&#xff0c;找到的根因&#xff0c;并找到了解决方法。过程中也…

影视行业如何远程完整快速传输大文件?

影视行业是一个充满创意和协作的领域。在影视制作中&#xff0c;涉及到多个环节和部门&#xff0c;包括编剧、导演、摄影、剪辑、配音、视效等。这些环节和部门通常分布在不同的地点&#xff0c;甚至不同的国家。因此&#xff0c;影视制作过程中需要频繁进行远程传输&#xff0…

前后端-记录

目录 ApiRESTful API Api api Application Programming Interface 应用程式界面 RESTful API rest Representational State Transfer 表现层状态转移&#xff0c;属于设计风格&#xff0c;不是强制标准 满足rest的 restful

科技赋能,创新发展!英码科技受邀参加2023中国创新创业成果交易会

11月17日至19日&#xff0c;2023中国创新创业成果交易会&#xff08;简称&#xff1a;创交会&#xff09;在广州市广交会展馆圆满举行。英码科技受邀参加本届创交会&#xff0c;并在会场展示了创新性的AIoT产品、深元AI引擎和行业热门解决方案。 据介绍&#xff0c;本届创交会由…