鱼C论坛

 找回密码
 立即注册

[已解决]简单的登录界

[复制链接]
发表于 2024-5-28 19:29:32 | 显示全部楼层
豪在这学python 发表于 2024-05-28 19:29
country 在数据库中的类型为cachar,你给出的结果似乎 ...


如果查询的`country`列在数据库中的类型为`char`,并且包含非ASCII字符(比如中文),在绘制柱状图时可能会出现乱码问题。为了解决乱码问题,你可以使用`fontproperties`参数来设置字体。下面是一个示例代码:
import matplotlib.pyplot as plt
import mysql.connector
from matplotlib.font_manager import FontProperties

# 连接到 MySQL 数据库
db = mysql.connector.connect(
    host="localhost",
    user="root",
    password="123456",
    database="dataTable"
)

# 创建游标对象
cursor = db.cursor()

# 执行 SQL 查询语句
sql = "SELECT country FROM data"
cursor.execute(sql)

# 获取查询结果
result = cursor.fetchall()

# 提取结果中的country数据
countries = [row[0] for row in result]

# 关闭游标和数据库连接
cursor.close()
db.close()

# 设置字体
font = FontProperties(fname="SimHei.ttf", size=12)

# 绘制柱状图
plt.bar(range(len(countries)), countries)
plt.xticks(range(len(countries)), countries, fontproperties=font)
plt.show()

在这个示例代码中,我们使用`SimHei.ttf`字体文件来指定中文字体,确保能正确显示中文字符。你可以根据实际情况修改字体文件路径和其他相关设置。注意,在运行代码前需要将字体文件放到相应路径下。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-28 19:32:32 | 显示全部楼层
FishC 发表于 2024-5-28 19:29
如果查询的`country`列在数据库中的类型为`char`,并且包含非ASCII字符(比如中文),在绘制柱状图时可 ...

运行出错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-28 19:33:07 | 显示全部楼层


对不起,我之前的回答可能有误导。实际上,在绘制柱状图时使用`matplotlib`库,不需要直接从数据库中获取数据来构建横坐标。

通常情况下,你可以将查询结果中的`country`作为纵坐标的值,然后在横坐标上使用数字索引来表示不同的柱子。

以下是一个修正的示例代码:
import mysql.connector
import matplotlib.pyplot as plt

# 连接到 MySQL 数据库
db = mysql.connector.connect(
    host="localhost",
    user="root",
    password="123456",
    database="dataTable"
)

# 创建游标对象
cursor = db.cursor()

# 执行 SQL 查询语句
sql = "SELECT country FROM data"
cursor.execute(sql)

# 获取查询结果
result = cursor.fetchall()

# 关闭游标和数据库连接
cursor.close()
db.close()

# 处理查询结果
countries = [row[0] for row in result]
x = range(len(countries))

# 绘制柱状图
plt.bar(x, countries)
plt.xticks(x, countries)
plt.xlabel('Country')
plt.ylabel('Value')
plt.title('Bar Chart')

# 显示图表
plt.show()
请确保你的系统已正确安装`mysql-connector-python`和`matplotlib`库,你可以使用`pip`命令进行安装:
pip install mysql-connector-python matplotlib
此外,还需要根据你的实际情况修改数据库连接的相关参数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-28 19:33:34 | 显示全部楼层
小肥狼haoran 发表于 2024-5-28 19:06
有种让AI帮你写作业的感觉

因为很多东西涉及盲区,只能让他来帮我完成了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-28 19:33:41 | 显示全部楼层
豪在这学python 发表于 2024-05-28 19:33
因为很多东西涉及盲区,只能让他来帮我完成了{:5_100: ...


没问题,我可以帮你完成。请提供数据库中的表结构和需要绘制柱状图的字段名字。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-28 19:37:47 | 显示全部楼层
FishC 发表于 2024-5-28 19:33
对不起,我之前的回答可能有误导。实际上,在绘制柱状图时使用`matplotlib`库,不需要直接从数据库中获 ...

图表中出现中文的地方都出现了乱码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-28 19:38:16 | 显示全部楼层
豪在这学python 发表于 2024-05-28 19:37
图表中出现中文的地方都出现了乱码


出现中文乱码的问题通常是因为字体不兼容导致的。为了在图表中正确显示中文字符,你可以使用以下方法:

1. 确保你的电脑中已经安装了支持中文的字体,比如微软雅黑(Microsoft YaHei)、宋体(SimSun)等。

2. 在绘制图表之前,设置Matplotlib库的字体为中文字体。例如,可以使用如下代码:

import matplotlib.pyplot as plt
   plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 指定字体为微软雅黑

   将上述代码放在绘制柱状图之前,将默认字体设置为中文字体。

如果以上方法仍然无法解决乱码问题,可以尝试其他字体配置或者指定英文标签代替中文标签。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-28 19:38:42 | 显示全部楼层
豪在这学python 发表于 2024-5-28 19:37
图表中出现中文的地方都出现了乱码

并且这里的图标我希望是更加高级、美观的可视化图表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-28 19:39:17 | 显示全部楼层
豪在这学python 发表于 2024-05-28 19:38
并且这里的图标我希望是更加高级、美观的可视化图表


如果你希望使用更高级、美观的可视化图表,可以考虑使用一些专门的数据可视化库,如Seaborn、Plotly或Bokeh。这些库提供了丰富的可视化选项和交互功能,可以创建各种类型的高级图表。

以下是一个使用Plotly库绘制美观的柱状图的示例代码:
import plotly.express as px
import mysql.connector

# 连接到 MySQL 数据库
db = mysql.connector.connect(
    host="localhost",
    user="root",
    password="123456",
    database="dataTable"
)

# 创建游标对象
cursor = db.cursor()

# 执行 SQL 查询语句
sql = "SELECT country, population FROM data"
cursor.execute(sql)

# 获取查询结果
result = cursor.fetchall()

# 提取数据
countries = [row[0] for row in result]
population = [row[1] for row in result]

# 使用Plotly绘制柱状图
fig = px.bar(x=countries, y=population, labels={'x':'Country', 'y':'Population'})
fig.show()

# 关闭游标和数据库连接
cursor.close()
db.close()

注意:运行此代码之前,请确保已安装`plotly`库(使用`pip install plotly`进行安装)。此代码将根据数据库中的`country`和`population`字段绘制柱状图,并使用Plotly展示。你可以根据需要进一步自定义图表样式和动态交互。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-29 09:03:13 | 显示全部楼层
FishC 发表于 2024-5-28 19:39
如果你希望使用更高级、美观的可视化图表,可以考虑使用一些专门的数据可视化库,如Seaborn、Plotly或B ...

"""数据获取,获取歌单详情页的信息"""
from bs4 import BeautifulSoup
import pandas as pd
import requests
import time


def get_data_of_music_list_detail_page():
    """获取歌单详情页的信息"""
    df = pd.read_csv('music_data/new/music_list.csv', header=None, on_bad_lines=None, names=['url', 'title', 'play',
                                                                                             'user'])

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (HTML, like Gecko) '
                      'Chrome/63.0.3239.132 Safari/537.36 '
    }

    print("正在获取歌单详情页的信息...")

    # 输出进度条
    t = 60
    start = time.perf_counter()

    for i in range(t + 1):
        finsh = "▓" * i
        need_do = "-" * (t - i)
        progress = (i / t) * 100
        dur = time.perf_counter() - start

        print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(progress, finsh, need_do, dur), end="")

        time.sleep(0.02)

    for i in df['url']:
        time.sleep(2)

        url = 'https://music.163.com' + i
        response = requests.get(url=url, headers=headers)
        html = response.text
        soup = BeautifulSoup(html, 'html.parser')

        # 获取歌单标题
        title = soup.select('h2')[0].get_text().replace(',', ',')

        # 获取标签
        tags = []
        tags_message = soup.select('.u-tag i')

        for p in tags_message:
            tags.append(p.get_text())

        # 对标签进行格式化
        if len(tags) > 1:
            tag = '-'.join(tags)
        else:
            tag = tags[0]

        # 获取歌单介绍
        if soup.select('#album-desc-more'):
            text = soup.select('#album-desc-more')[0].get_text().replace('\n', '').replace(',', ',')
        else:
            text = '无'

        # 获取歌单收藏量
        collection = soup.select('#content-operation i')[1].get_text().replace('(', '').replace(')', '')

        # 歌单播放量
        play = soup.select('.s-fc6')[0].get_text()

        # 歌单内歌曲数
        songs = soup.select('#playlist-track-count')[0].get_text()

        # 歌单评论数
        comments = soup.select('#cnt_comment_count')[0].get_text()

        # 输出歌单详情页信息
        print('\r', title, tag, text, collection, play, songs, comments, end='', flush=True)

        # 将详情页信息写入CSV文件中
        with open('music_data/new/music_detail.csv', 'a+', encoding='utf-8-sig') as f:
            f.write(title + ',' + tag + ',' + text + ',' + collection + ',' + play + ',' + songs + ',' + comments +
                    '\n')

        # 获取歌单内歌曲名称
        li = soup.select('.f-hide li a')

        for j in li:
            with open('music_data/new/music_name.csv', 'a+', encoding='utf-8-sig') as f:
                f.write(j.get_text() + '\n')

    print("\n已获取歌单详情页的信息,保存至 music_data/music_name.csv")

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 09:03:24 | 显示全部楼层
豪在这学python 发表于 2024-05-29 09:03
"""数据获取,获取歌单详情页的信息"""
from bs4 imp ...


这段代码是一个用于从网易云音乐获取歌单详情页信息的Python函数。它使用了`requests`库发送HTTP请求,使用`BeautifulSoup`进行HTML解析,以获取具体的音乐信息。

如果你想要将获取到的歌单详情页信息可视化成更高级、美观的图表,可以考虑使用数据可视化库,如`matplotlib`、`seaborn`、`plotly`等。这些库提供了各种类型的可视化图表,可以根据你的需求和偏好选择合适的图表进行展示。

以下是一个使用`matplotlib`库绘制柱状图的示例代码,以展示歌单收藏量和播放量的对比:
import matplotlib.pyplot as plt
import pandas as pd

# 从CSV文件中读取歌单详情页信息
df = pd.read_csv('music_data/new/music_detail.csv')

# 提取歌单收藏量和播放量列的数据
collection = df['collection']
play = df['play']

# 创建柱状图
plt.bar(df['title'], collection, label='Collection')
plt.bar(df['title'], play, label='Play')

# 设置图表标题和标签
plt.title('Collection and Play Comparison')
plt.xlabel('Music List')
plt.ylabel('Count')

# 添加图例
plt.legend()

# 显示图表
plt.show()

你可以根据需要,对该示例代码进行修改和调整,以满足你的具体需求。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-29 09:05:16 | 显示全部楼层
豪在这学python 发表于 2024-5-29 09:03
"""数据获取,获取歌单详情页的信息"""
from bs4 import BeautifulSoup
import pandas as pd

优化这段代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 09:05:31 | 显示全部楼层


以下是对代码进行优化的示例,包括改进循环,使用列表推导式和写入CSV文件的方式:
from bs4 import BeautifulSoup
import pandas as pd
import requests
import time


def get_data_of_music_list_detail_page():
    """获取歌单详情页的信息"""
    df = pd.read_csv('music_data/new/music_list.csv', header=None, on_bad_lines=None, names=)

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (HTML, like Gecko) '
                      'Chrome/63.0.3239.132 Safari/537.36 '
    }

    print("正在获取歌单详情页的信息...")

    # 输出进度条
    t = 60
    start = time.perf_counter()

    for i in range(t + 1):
        finsh = "-" * i
        need_do = "-" * (t - i)
        progress = (i / t) * 100
        dur = time.perf_counter() - start

        print("\r{:^3.0f}% [{}->{}] {:.2f}s".format(progress, finsh, need_do, dur), end="")
        time.sleep(0.02)

    results = []
  
    for i in df:
        time.sleep(2)
        url = 'https://music.163.com' + i
        response = requests.get(url=url, headers=headers)
        html = response.text
        soup = BeautifulSoup(html, 'html.parser')

        # 获取歌单标题
        title = soup.select_one('h2').get_text().replace(',', ',')

        # 获取标签
        tags = [p.get_text() for p in soup.select('.u-tag i')]
        tag = '-'.join(tags) if len(tags) > 1 else tags[0] if tags else ""

        # 获取歌单介绍
        text = soup.select_one('#album-desc-more').get_text().replace('\n', '').replace(',', ',') if soup.select_one(
            '#album-desc-more') else '无'

        # 获取歌单收藏量
        collection = soup.select_one('#content-operation i').get_text().replace('(', '').replace(')', '')

        # 歌单播放量
        play = soup.select_one('.s-fc6').get_text()

        # 歌单内歌曲数
        songs = soup.select_one('#playlist-track-count').get_text()

        # 歌单评论数
        comments = soup.select_one('#cnt_comment_count').get_text()

        # 获取歌单内歌曲名称
        li = soup.select('.f-hide li a')
        music_names = [j.get_text() for j in li]

        result = (title, tag, text, collection, play, songs, comments, music_names)
        results.append(result)

    # 将详情页信息写入CSV文件中
    with open('music_data/new/music_detail.csv', 'a+', encoding='utf-8-sig') as f:
        for r in results:
            f.write(','.join(r[:7]) + '\n')

    # 将歌单内歌曲名称写入CSV文件中
    with open('music_data/new/music_name.csv', 'a+', encoding='utf-8-sig') as f:
        for r in results:
            for name in r[7]:
                f.write(name + '\n')

    print("\n已获取歌单详情页的信息,保存至 music_data/new/music_detail.csv 和 music_data/new/music_name.csv")

这个版本中,使用`select_one()`方法来选择只有一个匹配元素的选择器,使用列表推导式简化了代码,同时将结果保存在列表中进一步减少了循环嵌套。同时,将文件写入部分也进行了优化,避免多次打开和关闭文件。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-29 09:07:49 | 显示全部楼层
FishC 发表于 2024-5-29 09:05
以下是对代码进行优化的示例,包括改进循环,使用列表推导式和写入CSV文件的方式:

检查代码,存在错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 09:08:00 | 显示全部楼层


很抱歉,我给出的代码存在一些错误。下面是修复过的版本:
from bs4 import BeautifulSoup
import pandas as pd
import requests
import time


def get_data_of_music_list_detail_page():
    df = pd.read_csv('music_data/new/music_list.csv', header=None, on_bad_lines=None)
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (HTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }

    print("正在获取歌单详情页的信息...")

    # 输出进度条
    t = 60
    start = time.perf_counter()

    for i in range(t + 1):
        finsh = "=" * i
        need_do = "-" * (t - i)
        progress = (i / t) * 100
        dur = time.perf_counter() - start

        print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(progress, finsh, need_do, dur), end="")
        time.sleep(0.02)

    for index, row in df.iterrows():
        time.sleep(2)
        url = 'https://music.163.com' + row[0]
        response = requests.get(url=url, headers=headers)
        html = response.text
        soup = BeautifulSoup(html, 'html.parser')

        # 获取歌单标题
        title = soup.select('.tit h2')[0].get_text().replace(',', ',')

        # 获取标签
        tags = [tag.get_text() for tag in soup.select('.tags .u-tag')]

        # 对标签进行格式化
        tag = '-'.join(tags) if len(tags) > 1 else tags[0]

        # 获取歌单介绍
        text = soup.select('#album-desc-more')[0].get_text().replace('\n', '').replace(',', ',') if soup.select(
            '#album-desc-more') else '无'

        # 获取歌单收藏量
        collection = soup.select('#content-operation span')[1].get_text().replace('(', '').replace(')', '')

        # 歌单播放量
        play = soup.select('.play span')[0].get_text()

        # 歌单内歌曲数
        songs = soup.select('.sub.s-fc3')[0].get_text()

        # 歌单评论数
        comments = soup.select('#cnt_comment_count')[0].get_text()

        # 输出歌单详情页信息
        print('\r', title, tag, text, collection, play, songs, comments, end='', flush=True)

        # 将详情页信息写入CSV文件中
        with open('music_data/new/music_detail.csv', 'a+', encoding='utf-8-sig') as f:
            f.write(','.join([title, tag, text, collection, play, songs, comments]) + '\n')

        # 获取歌单内歌曲名称
        music_names = [li.get_text() for li in soup.select('.f-hide li a')]

        # 将歌曲名称写入CSV文件中
        with open('music_data/new/music_name.csv', 'a+', encoding='utf-8-sig') as f:
            f.writelines('\n'.join(music_names))

    print("\n已获取歌单详情页的信息,保存至 music_data/music_name.csv")

此优化版本对于循环中的进度条输出进行了改进,同时修正了一些数据提取和写入CSV文件的问题。注意,在运行之前确保已安装所需的库。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-29 09:09:20 | 显示全部楼层
FishC 发表于 2024-5-29 09:08
很抱歉,我给出的代码存在一些错误。下面是修复过的版本:

raise ValueError(f"Argument {on_bad_lines} is invalid for on_bad_lines")
ValueError: Argument None is invalid for on_bad_lines
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 09:09:31 | 显示全部楼层
豪在这学python 发表于 2024-05-29 09:09
raise ValueError(f"Argument {on_bad_lines} is inva ...


抱歉,这是由于`pd.read_csv`中的`on_bad_lines`参数值为`None`导致的错误。此参数已经被移除,因此请删除该参数。以下是修复后的代码:
from bs4 import BeautifulSoup
import pandas as pd
import requests
import time

def get_data_of_music_list_detail_page():
    df = pd.read_csv('music_data/new/music_list.csv', header=None, names=['URL'])
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (HTML, like Gecko) '
                      'Chrome/63.0.3239.132 Safari/537.36'
    }
    print("正在获取歌单详情页的信息...")
    for i, row in df.iterrows():
        url = 'https://music.163.com' + row['URL']
        response = requests.get(url=url, headers=headers)
        html = response.text
        soup = BeautifulSoup(html, 'html.parser')
        
        # 获取歌单标题
        title = soup.select('h2')[0].get_text().replace(',', ',')
        
        # 获取标签
        tags = []
        tags_message = soup.select('.u-tag i')
        for p in tags_message:
            tags.append(p.get_text())
        tag = '-'.join(tags) if len(tags) > 1 else tags[0]
        
        # 获取歌单介绍
        text = soup.select('#album-desc-more')[0].get_text().replace('\n', '').replace(',', ',') if soup.select('#album-desc-more') else '无'
        
        # 获取歌单收藏量
        collection = soup.select('#content-operation span.subscribed-count')[0].get_text()
        
        # 歌单播放量
        play = soup.select('.s-fc6')[0].get_text()
        
        # 歌单内歌曲数
        songs = soup.select('#playlist-track-count')[0].get_text()
        
        # 歌单评论数
        comments = soup.select('#cnt_comment_count')[0].get_text()
        
        print(title, tag, text, collection, play, songs, comments)
        
        # 将详情页信息写入CSV文件中
        with open('music_data/new/music_detail.csv', 'a+', encoding='utf-8-sig') as f:
            f.write(f"{title},{tag},{text},{collection},{play},{songs},{comments}\n")
        
        # 获取歌单内歌曲名称
        li = soup.select('.f-hide li a')
        for j in li:
            with open('music_data/new/music_name.csv', 'a+', encoding='utf-8-sig') as f:
                f.write(j.get_text() + '\n')

    print("已获取歌单详情页的信息,保存至 music_data/music_name.csv")

请注意,修复后的代码假设了`music_data/new/music_list.csv`文件的格式为一列URL。同时,请确保你已经安装了必要的库,如`beautifulsoup4`和`pandas`。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-29 09:11:06 | 显示全部楼层
FishC 发表于 2024-5-29 09:09
抱歉,这是由于`pd.read_csv`中的`on_bad_lines`参数值为`None`导致的错误。此参数已经被移除,因此请 ...

代码没有达到需要的效果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-29 09:11:19 | 显示全部楼层
豪在这学python 发表于 2024-05-29 09:11
代码没有达到需要的效果


非常抱歉,我之前的回答可能没有达到你需要的效果。下面是修正后的代码:
from bs4 import BeautifulSoup
import pandas as pd
import requests
import time


def get_data_of_music_list_detail_page():
    df = pd.read_csv('music_data/new/music_list.csv', header=None, names=['url'])

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (HTML, like Gecko) '
                      'Chrome/63.0.3239.132 Safari/537.36 '
    }

    print("正在获取歌单详情页的信息...")

    for index, row in df.iterrows():
        time.sleep(2)

        url = 'https://music.163.com' + row['url']
        response = requests.get(url=url, headers=headers)
        html = response.text
        soup = BeautifulSoup(html, 'html.parser')

        title = soup.select('h2')[0].getText().replace(',', ',')
        tags = [i.get_text() for i in soup.select('.u-tag i')]
        tag = '-'.join(tags) if len(tags) > 1 else tags[0]
        text = soup.select('#album-desc-more')[0].get_text().replace('\n', '').replace(',', ',') \
            if soup.select('#album-desc-more') else '无'
        collection = soup.select('#content-operation i')[0].get_text().replace('(', '').replace(')', '')
        play = soup.select('.s-fc6')[0].get_text()
        songs = soup.select('#playlist-track-count')[0].get_text()
        comments = soup.select('#cnt_comment_count')[0].get_text()

        print(title, tag, text, collection, play, songs, comments)

        with open('music_data/new/music_detail.csv', 'a+', encoding='utf-8-sig') as f:
            f.write(f"{title},{tag},{text},{collection},{play},{songs},{comments}\n")

        li = soup.select('.f-hide li a')

        with open('music_data/new/music_name.csv', 'a+', encoding='utf-8-sig') as f:
            for j in li:
                f.write(j.get_text() + '\n')

    print("已获取歌单详情页的信息,保存至 music_data/music_name.csv")

请确保你已经正确设置了文件路径,并提供正确的`music_list.csv`文件,其中包含歌单的URL。这个修正后的代码应该能够获取歌单详情页的信息并保存到相应的CSV文件中。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-29 09:17:43 | 显示全部楼层
FishC 发表于 2024-5-29 09:11
非常抱歉,我之前的回答可能没有达到你需要的效果。下面是修正后的代码:

ValueError: Argument None is invalid for on_bad_lines
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 02:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表