CJ19xmxy 2023-03-19 15:23 采纳率: 100%
浏览 24
已结题

问:这个爬取代码是哪里出问题了?

能帮我看看这个代码有什么问题吗
运行结果是这样的

C:\Users\Administrator\PycharmProjects\pythonProject2\venv\Scripts\python.exe "C:/Program Files/JetBrains/PyCharm Community Edition 2022.1/Pycharm/音乐爬取.py"
请输入要下载的歌手:薛之谦
需要下载第几页:1
Traceback (most recent call last):
  File "C:/Program Files/JetBrains/PyCharm Community Edition 2022.1/Pycharm/音乐爬取.py", line 25, in <module>
    with open('kuwo/%s.mp3' % name, 'wb') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'kuwo/演员.mp3'

Process finished with exit code 1



```python
import requests

headers = {
    'Cookie': '_ga=GA1.2.1574857442.1641026894; _gid=GA1.2.607461508.1641026894; kw_token=WRFKXNRRLBB',
    'csrf': 'WRFKXNRRLBB',
    'Host': 'www.kuwo.cn',
    'Referer': 'http://www.kuwo.cn/search/list',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
}
key = input('请输入要下载的歌手:')
pn = input('需要下载第几页:')

url = 'https://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key={}&pn={}'.format(key,pn)
resp = requests.get(url, headers=headers)

# print(resp.json())
for data in resp.json()['data']['list']:
    # print(data)
    rid = data['rid']
    # print(rid)
    name = data['name'].split('-')[0]
    # print(name)
    new_url = 'https://link.hhtjim.com/kw/{}.mp3'.format(rid)
    response = requests.get(new_url)
    with open('kuwo/%s.mp3' % name, 'wb') as f:
        f.write(response.content)
        print(name, '下载成功')


```

  • 写回答

3条回答 默认 最新

  • 文盲老顾 WEB应用领新星创作者 2023-03-19 16:37
    关注

    open 只能创建文件,不能创建文件夹,你需要在写文件前验证文件是否存在,如果不存在需要在写入前创建文件夹

    
    import requests
    import os  # 追加 os 引用
    
    headers = {
        'Cookie': '_ga=GA1.2.1574857442.1641026894; _gid=GA1.2.607461508.1641026894; kw_token=WRFKXNRRLBB',
        'csrf': 'WRFKXNRRLBB',
        'Host': 'www.kuwo.cn',
        'Referer': 'http://www.kuwo.cn/search/list',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
    }
    key = '薛之谦' #input('请输入要下载的歌手:')
    pn = 1 #input('需要下载第几页:')
    
    url = 'https://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key={}&pn={}'.format(key,pn)
    resp = requests.get(url, headers=headers)
    
    # print(resp.json())
    for data in resp.json()['data']['list']:
        # print(data)
        rid = data['rid']
        # print(rid)
        name = data['name'].split('-')[0]
        # print(name)
        new_url = 'https://link.hhtjim.com/kw/{}.mp3'.format(rid)
        response = requests.get(new_url)
        if not os.path.exists('kuwo'): # 如果文件夹不存在则创建
            os.mkdir('kuwo')
        
        with open('kuwo/%s.mp3' % name, 'wb') as f:
            f.write(response.content)
            print(name, '下载成功')
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月27日
  • 已采纳回答 3月19日
  • 创建了问题 3月19日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效