Python爬虫使用实例-mdrama

一个Python爬虫使用实例:主要用于下载指定的剧集音频。分别从网页和json文件中获取剧集的title和剧集中所存在音频的id,调用you-get,最后自动重命名下载文件夹为剧集名title。

目标网址:

https://www.missevan.com/mdrama/×××××

其中×××××为drama的id,例如28021

  • 从getdrama的json文件中获取drama列表中的id和name
  • 用you-get获取音乐1.使用pyautogui调用you-get ,2. 使用 os.system() 直接调用 you-get 命令行工具】
  • drama文件夹自动重命名为剧集名
  • 下载多个drama

一、获取资源

在这里插入图片描述
首先明确需求,需要获取音频的id和name分别作为data和title,查看源码,发现看不到:
在这里插入图片描述

可以从getdrama的json文件中获取id和name(不,用you-get的话只需要id)。
在这里插入图片描述
以28021为例,0-276,共277个music
在这里插入图片描述
小细节:听剧的时候一般是不会出现drama的,他一般是出现sound/player,点大标题可以跳转到drama,或者去源码查看(关于url)
在这里插入图片描述

二、发送请求

获取json文件

json_url = f'https://www.missevan.com/dramaapi/getdrama?drama_id={
     drama_id}'
# 将获取的 JSON 数据写入文件
with open('getdrama.json', 'w', encoding='utf-8') as f:
    f.write(response.text)

读取json文件

# 读取 getdrama.json 文件
with open('getdrama.json', 'r', encoding='utf-8') as f:
    content = f.read()

因为用的是you-get,需要提前切换到西文状态下,而文件夹名可能含有中文字符,所以在download之后才重命名为title。

# 下载音频文件
download_dir = 'D:/drama1/'
if not os.path.exists(download_dir):
    os.mkdir(download_dir)
    
(省略部分代码....)

download()
os.rename(download_dir, f'D:/{
     title}/')

三、数据解析

获取drama的id

drama_id = re.search(r'/mdrama/(\d+)', url).group(1)  # 提取 drama_id

获取drama的名称:

title = selector.css('.title-content::text').get().replace(' ','').replace('\n','')

获取drama中音频的id

# 匹配包含 "id" 和 "sound_id" 的 JSON 对象
pattern = r'\{"id":.*?\}'  # 正则表达式匹配模式
matches = re.findall(pattern, content)

# 提取匹配的 JSON 对象中的所需字段
results = []

for match in matches:
    try:
        data_dict = json.loads(match)
        sound_id = data_dict.get("sound_id")
        if sound_id:
            results.append({
   "name": data_dict.get("name"), "sound_id": sound_id})
    except json.JSONDecodeError:
        continue  # 忽略 JSON 解码错误

# 将结果列表转换为 DataFrame
df = pd.DataFrame(results)

四、保存数据

you-get -o {
   download_dir} {
   url}

五、代码实现

1/ 单个剧集

单个drama可以自动改文件名 ,drama列表暂时不能

# 单个剧集mdrama 下载后自动改文件名
import os
import re
import json
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

镜花照无眠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值