上海做得好的网站建设公司,做网站最省钱,秦皇岛高端网站设计,使用ftp修改网站图片嗨喽~大家好呀#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取
环境使用: Python 3.10 Pycharm
模块使用: import requests pip install requests import parsel pip install parsel import pr…嗨喽~大家好呀这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取
环境使用: Python 3.10 Pycharm
模块使用: import requests pip install requests import parsel pip install parsel import prettytable pip install prettytable import os
打包exe程序: pyinstaller - pip install pyinstaller
爬虫基本实现流程 一. 数据来源分析 明确需求 明确采集的网站以及数据内容 (实现什么样程序) 程序功能: 通过关键字(歌手/歌名) 进行歌曲搜索, 然后进行对应歌曲内容下载 网址: https://www.gequbao.com/ 数据: 歌曲内容 / 歌曲标题 抓包分析 (浏览器中进行的操作) 抓包分析: 分析我们需要的数据, 可以请求那个网址能够得到 分析操作: 通过浏览器自带开发者工具 先分析歌曲链接地址 - 歌曲链接地址从哪里的生成 - 如何才能实现搜索对应下载功能 打开开发者工具: F12 https://www.gequbao.com/music/402856 在网页页面打开开发者工具 刷新网页: 让数据内容重新加载一遍 快速找到对应歌曲播放地址 https://sy-sycdn.kuwo.cn/af5833d0735b1bba1f86d4ef6c3888d7/65d72918/resource/n 2/70/55/756351052.mp3?fromvip 通过关键字搜索找到对应数据包位置 爬虫: 批量数据采集 继续分析, 音频链接在那个数据包当中是存在的 关键字: 使用音频链接当中一段参数即可 https://sy-sycdn.kuwo.cn/af5833d0735b1bba1f86d4ef6c3888d7/65d72918/resource/n 2/70/55/756351052.mp3?fromvip 比如: 756351052 作为关键字进行搜索 晴天数据包地址: https://www.gequbao.com/api/play_url?id402856json1 阴天数据包地址: https://www.gequbao.com/api/play_url?id61045json1 对比分析: idxxxx (歌曲ID) 晴天ID 402856 阴天ID 61045 只要获取到歌曲ID就可以下载对应歌曲内容 分析歌曲ID可以请求那个链接获得 搜索链接地址: https://www.gequbao.com/s/%E9%98%B4%E5%A4%A9 歌手 / 歌名 / 音乐ID 目的: 根据搜索关键字下载对应歌曲 歌曲 - 专门数据包链接 阴天数据包地址: https://www.gequbao.com/api/play_url?idxxxj son1 获取对应歌曲ID - https://www.gequbao.com/s/搜索关键字
二. 代码实现步骤 (基本四个步骤)
导入的模块 Python学习交流免费公开课免费资料
免费答疑系统学习加QQ群926207505# 导入数据请求模块 (需要安装 pip install requests)
import requests
# 导入数据解析模块 (需要安装 pip install parsel)
import parsel
# 导入制表模块 (需要安装 pip install prettytable)
from prettytable import PrettyTable
# 导入文件操作模块 (无需安装 内置模块)
import os1. 发送请求
模拟浏览器对于url地址发送请求
while True:发送请求- 模拟浏览器对于url地址发送请求# 模拟浏览器headers {# User-Agent 用户代理, 表示浏览器基本身份信息User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36}# 输入搜索key input(请输入你要下载歌曲(00退出): )if key 00:break# 请求网址: 搜索链接地址search fhttps://www.gequbao.com/s/{key}# 发送请求response requests.get(urlsearch, headersheaders)2. 获取数据
获取服务器返回响应数据 # 获取数据: 获取服务器返回响应数据html response.text3. 解析数据
提取我们需要的数据内容
解析方法: 本案例前三个都能用 re正则: 对于字符串数据进行提取 字符串数据即可 css选择器: 根据标签属性提取数据内容 需要是有标签格式 (√) xpath: 根据标签节点提取数据 需要是有标签格式 json数据解析: 一般情况字典取值 (必须json数据格式) Python学习交流免费公开课免费资料
免费答疑系统学习加QQ群926207505
解析数据: 提取我们需要的数据内容# 1. 把获取到html字符串数据, 转成可解析对象selector parsel.Selector(html)# 2. 根据标签数据, 提取相关内容 41条数据(第一条和最后一天不是我们需要)rows selector.css(.row)[1:-1]# 实例化对象tb PrettyTable()# 设置字段名tb.field_names [序号, 歌手, 歌名]# 自定义变量序号num 0# 创建空列表info []# for循环遍历, 提取列表里面元素for row in rows:# 3. 进行具体数据解析title row.css(.text-primary::text).get().strip() # 歌名music_id row.css(.text-primary::attr(href)).get().split(/)[-1] # IDname row.css(.text-success::text).get().strip() # 歌手dit {歌手: name,歌名: title,ID: music_id,}# 添加字典到列表中info.append(dit)# 添加字段内容tb.add_row([num, name, title])num 1print(tb)key_num input(请输入你要下载歌曲序号: )# 获取歌曲ID - 传入到歌曲数据包中即可# 请求网址: 歌曲对应数据包链接link fhttps://www.gequbao.com/api/play_url?id{info[int(key_num)][ID]}json1# 发送请求 获取响应数据json_data requests.get(urllink, headersheaders).json()# 解析数据, 提取歌曲链接music_url json_data[data][url]4. 保存数据
把数据内容保存本地文件夹 / 数据库 … 保存数据music_content requests.get(urlmusic_url, headersheaders).content# 自动创建文件夹if not os.path.exists(music): # 判断如果没有文件夹# 自动创建文件夹os.mkdir(music)song_name info[int(key_num)][歌名]with open(filefmusic\\{song_name}.mp3, modewb) as f:# 保存歌曲内容f.write(music_content)print(song_name, 保存成功!)如果文章看不懂我还准备了视频教程同样文末名片获取噢~ 尾语
最后感谢你观看我的文章呐~本次航班到这里就结束啦
希望本篇文章有对你带来帮助 有学习到一点知识~
躲起来的星星也在努力发光你也要努力加油让我们一起努力叭。 最后宣传一下呀~更多源码、资料、素材、解答、交流皆点击下方名片获取呀