Python对某音乐论坛进行简单的采集

今天简单的用Python来采集一下某论坛的歌曲

环境使用
Python 3.10
Pycharm

模块使用

requests --> 发送请求  pip install requests 
execjs --> pip install execjs
re     正则

源码和视频讲解都打包好了,文末名片自取

基本流程

一、数据来源分析

1.明确需求

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

  • 网址: https://****/thread-192873.htm
  • 数据: 歌曲内容(播放链接) / 歌曲标题
2.抓包分析

通过浏览器开发者工具分析对应的数据位置
本次抓包分析都是在浏览器中进行操作

  • 打开开发者工具
    • F12 / 右键点击检查选择network(网络)
  • 刷新网页
    • 让本网页的数据内容重新加载一遍
  • 通过关键字搜索找到对应数据位置
    • 关键字: 需要什么数据就搜什么
      • 数据使用播放链接中一段参数即可

需要歌曲播放链接 -> 开发者工具 -> 网络 -> 媒体

如何确定那个歌曲链接是我们需要的:

  • 直接复制链接地址, 在新的浏览器窗口页面进行访问
  • 两个链接都可以播放歌曲内容, 如何进行选择呢?
    分析歌曲链接如何生成的 -> 请求那个数据包地址, 能够得到这个歌曲链接
    (通过关键字搜索)

简单总结

1.通过开发者工具 -> 网络 -> 媒体 -> 播放地址 (两个链接地址)

https://***/get_music.php (1)

分析这个链接是如何生成的

https://*********/C400001KBxQw0PWq7Y.m4a (2)
直接分析这个链接是找不到生成位置 (真实来源是从1链接跳转过来的)
通过分析可以发现, 1链接重定向, 访问1链接, 可以直接跳转2链接

2.https://******.php?key=…&p=… 链接 有两个参数 key p

通过开发者工具搜索发现, key和链接都是在 https://hifini.com/thread-192873.htm 网页源代码中有

p值是通过 https://*****/view/js/dm.js JS代码 -> 调用generateParam函数返回值

二、代码实现步骤

1.发送请求

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

# 导入数据请求模块 import requests """发送请求"""
# 模拟浏览器
headers = {
# User-Agent 用户代理, 表示浏览器基本身份信息
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'
}
# 请求网址:
url = 'https://****/thread-192873.htm' # 发送请求
response = requests.get(url=url, headers=headers)
2.获取数据

获取服务器返回响应数据

3.解析数据

提取我们需要的数据内容

正则表达式简单使用

re.findall(‘数据’, ‘数据源’) -> 找到所有你想要的数据
从什么地方, 去匹配什么数据
需要什么数据 -> 找到数据对应位置, 前后复制一部分内容, 把你数据用(.*?) 代替即可

# 提取歌名
title = re.findall("title: '(.*?)',", html)[0] # 提取链接地址
url_ = re.findall("url: '(.*?)'", html)[0] # 加密参数
data = re.findall("generateParam\('(.*?)'\)", html)[0] """根据JS代码, 获取P值"""
# 读取js代码
js_file = open('音乐论坛.js', encoding='utf-8').read() # 编译js代码
js_code = execjs.compile(js_file) # 调用JS代码加密函数
p = js_code.call('generateParam', data) # 构建完整的音乐播放地址
music_url = 'https:/****/' + url_ + p
4.保存数据

获取歌曲内容保存本地文件

# 对于歌曲链接发送请求获取歌曲内容
music_content = requests.get(url=music_url, headers=headers).content # 数据保存
with open('music\\' + title + '.mp3', mode='wb') as f: # 写入数据
f.write(music_content)
5.批量采集

分析请求链接/参数变化规律

  • https://***/thread-192873.htm
  • https://***/thread-26041.htm
  • https://***/thread-1227.htm

通过分析对比: 歌曲资源贴链接ID变化

  • 只要获取所有帖子ID就可以获取所有歌曲内容
  • 或者说获取所有资源贴链接

基本流程

一.数据来源分析

  • 1.明确需求
    -网站: https://*****/forum-1.htm
    -数据: 帖子ID / 帖子链接
  • 2.抓包分析

第一页: https://****/forum-1-1.htm?orderby=lastpid

第二页: https://****/forum-1-2.htm?orderby=lastpid

第三页: https://*****/forum-1-3.htm?orderby=lastpid

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

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

相关文章

手写RPC-令牌桶限流算法实现,以及常见限流算法

为什么需要服务限流、降级 分布式架构下,不同服务之间频繁调用,对于某个具体的服务而言,可能会面临高并发场景。在这样的情况下,提供服务的每个服务节点就都可能由于访问量过大而引起一系列问题,比如业务处理耗时过长、…

VMware三种网络模式---巨细

文章目录 目录 ‘一.网络模式概述 二.桥接模式 二.NAT模式 三.仅主机模式 四.案例演示 防火墙配置: 虚拟电脑配置 前言 本文主要介绍VMware的三种网络模式 ‘一.网络模式概述 VMware中分为三种网络模式: 桥接模式:默认与宿主机VMnet0绑…

基于Java中的SSM框架实现商店积分管理系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现商店积分管理系统演示 摘要 随着时代的发展,信息化的管理手段已被普遍应用于企业的日常运作中。在当今竞争激烈的市场中,消费者的需求量日益增长,而商品信息的管理也变得越来越复杂,因此,实施…

14. Hibernate 一对多双向关联映射

1. 前言 本节课程和大家一起聊聊一对多关联映射。通过本节课程,你将了解到: 如何实现一对多关联映射; 如何实现双向一对多关联映射; 关联映射中的级联操作。 2. 一对多关联映射 关系型数据库中表与表中的数据存在一对多&…

深入理解Linux网络(八):内核如何发送网络包

深入理解Linux网络(八):内核如何发送网络包 一、总览二、网卡启动准备三、ACCEPT 创建新 SOCKET四、开始发送数据send 系统调⽤实现传输层处理传输层拷贝传输层发送 网络层发送原理邻居⼦系统网络设备子系统软中断调度igb网卡驱动发送发送完成…

Python 实现PDF和TIFF图像之间的相互转换

PDF是数据文档管理领域常用格式之一,主要用于存储和共享包含文本、图像、表格、链接等的复杂文档。而TIFF(Tagged Image File Format)常见于图像处理领域,主要用于高质量的图像文件存储。 在实际应用中,我们可能有时需…

wefwefwe

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行&am…

在 ArkTS 中集成 C 语言模块来管理文件描述符

文章目录 前言ArkTS模块C语言模块C模块代码 总结 前言 在现代开发中,尤其是在处理文件操作时,使用文件描述符(fd)是一种常见的方法。ArkTS提供了一种强大的方式来与底层C代码交互,使我们能够利用C语言的性能优势来管理…

dsa加训

refs: OI Wiki - OI Wiki (oi-wiki.org) 1. 枚举 POJ 2811 熄灯问题 refs : OpenJudge - 2811:熄灯问题 如果要枚举每个灯开或者不开的情况,总计2^30种情况,显然T。 不过我们可以发现:若第i行的某个灯亮了,那么有且仅有第i行和第…

Win10使用VS Code远程连接Ubuntu服务器时遇到SSH公钥错误的解决方案

在使用Windows 10上的Visual Studio Code(VS Code)远程连接Ubuntu 20.04服务器时,遇到了以下错误: 错误的原因 这个错误消息表明,SSH 客户端检测到远程主机的 ECDSA 公钥已更改。可能是由于以下原因之一&#xff1a…

组蛋白乳酸化 | 调控蛋白Writers、Erasers和Readers

组蛋白修饰的调控可以被归类为三类蛋白:Writers(写入者)、Erasers(擦除者)和Readers(读取者)。Writers是负责在组蛋白上添加修饰基团的蛋白,包括乙酰化、甲基化等修饰。Erasers则是负…

学习记录——day17 数据结构 队列 链式队列

队列介绍 1、队列也是操作受限的线性表:所有操作只能在端点处进行,其删除和插入必须在不同端进行 2、允许插入操作的一端称为队尾,允许删除操作的一端称为队头 3、特点:先进先出(FIFO) 4、分类: 顺序存储的栈称为顺序栈 链式存储的队列&a…

IP数据报结构详解:从基础到进阶

目录 IP数据报的格式 IP数据报首部的固定部分 IP数据报首部的可变部分 实例分析:数据报的分片 生存时间(TTL)与协议 首部检验和 总结 在网络通信中,IP数据报是至关重要的基本单元。本文将带您深入了解IP数据报的格式及其各个…

【Python】使用抓包Fiddler软件,网络查询 遇到“您的连接不是私密连接”的问题的解决方法

使用Fiddler抓包软件很久,忽然发现网络使用有问题,一点开浏览器就会出现类似下面的页面: 检查了网络情况发现不是网络的问题,也排除了封号的可能。发现只要把抓包软件Fiddler关闭以后就没问题了,就知道问题是出在软件…

国产光电耦合器2024年的机遇与挑战

随着科技的飞速发展,2024年对于国产光电耦合器行业来说,无疑是充满机遇与挑战的一年。本文将深入探讨该行业在技术创新、市场竞争、5G时代、新兴应用领域和国际市场拓展方面的现状及未来前景。 技术创新的黄金期 物联网和人工智能技术的迅猛发展&#x…

Java之集合底层-数据结构

Java集合之数据结构 1 概述 数据结构是计算机科学中研究数据组织、存储和操作的一门学科。它涉及了如何组织和存储数据以及如何设计和实现不同的数据操作算法和技术。常见的据结构有线性数据结构(含数组、链表、栈和队列等),非线性数据结构…

睿考网:中级会计师考试各科分值是多少?

中级会计考试是会计领域的一个重要考核,考试题型包含多种:单选题、多选题、判断题、计算分析题和综合题。这些不同的题型不仅覆盖了广泛的知识点,而且各自的评分标准也是不一样的。为了帮助大家更全面地掌握各类题型的得分规则,睿…

解决:Nacos无法获取远程配置数据,导致项目启动各种配置异常

解决:Nacos无法获取远程配置数据,导致项目启动各种配置异常 一问题描述:1.项目pom依赖版本:2.bootstrap.yml配置信息3.远程配置:默认public命名空间4.启动报异常,显示没有配置数据源,实际远程已…

韦东山嵌入式linux系列-查询方式的按键驱动程序_编写框架

1 LED 驱动回顾 对于 LED, APP 调用 open 函数导致驱动程序的 led_open 函数被调用。在里面,把 GPIO 配置为输出引脚。安装驱动程序后并不意味着会使用对应的硬件,而 APP 要使用对应的硬件,必须先调用 open 函数。所以建议在驱动…

Adobe Character Animator (CH) 安装包软件下载

目录 一、软件简介 二、下载与安装 1. 下载 2. 安装 三、注意事项 1. 硬件要求 2. 兼容性 四、功能介绍 1. 实时面部捕捉 2. 实时语音同步 3. 动作捕捉 五、快捷键操作 CH 提供了一系列快捷键以方便用户快速操作。以下是一些常用的快捷键: 一、软件简介…