鱼C论坛

 找回密码
 立即注册
查看: 2196|回复: 9

网易云音乐

[复制链接]
发表于 2021-6-19 11:08:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
为什么只能爬到10首歌呢?歌单里不止10首
  1. #!/user/bin/env python
  2. # -*- coding:utf-8 -*-
  3. # time:2021/6/17
  4. #需求:下载网易云歌单
  5. import requests as req
  6. from lxml import etree
  7. import os

  8. headers = {
  9.     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
  10.     }
  11. url = "https://music.163.com/playlist?id=6775871260"
  12. # url = "https://music.163.com/playlist?id=6731975194"
  13. page_text = req.get(url=url,headers=headers).text
  14. tree = etree.HTML(page_text)
  15. id_list = tree.xpath('//*[@id="song-list-pre-cache"]//a/@href')
  16. name_list = tree.xpath('//*[@id="song-list-pre-cache"]//a/text()')
  17. i = 0
  18. print(name_list,id_list)
  19. #为毛只有10首??
  20. if not os.path.exists("./wangyi list music"):
  21.     os.mkdir("./wangyi list music")
  22. try:
  23.     for id_ in id_list:
  24.         id_ = id_.split('=')[-1]
  25.         name = name_list[i]
  26.         i +=1
  27.         base_url = "http://music.163.com/song/media/outer/url?id=%s.mp3" % id_
  28.         content = req.get(url=base_url,headers=headers).content
  29.         with open("./wangyi list music/"+name+".mp3",'wb') as fp:
  30.             fp.write(content)
  31.             print(name+".mp3下载完成!")
  32. except FileNotFoundError or OSError:
  33.     print(name+"因出错没有下载")
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-6-19 11:09:49 | 显示全部楼层
可能是要翻到下一页的

可以试着加上"page"参数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-19 15:32:36 | 显示全部楼层
xiaosi4081 发表于 2021-6-19 11:09
可能是要翻到下一页的

可以试着加上"page"参数

页面里面没有翻页这个按钮
你说的page参数是加在哪里呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-19 15:39:53 | 显示全部楼层
查看更多内容,请下载客户端
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-19 15:58:25 | 显示全部楼层
南归 发表于 2021-6-19 15:39
查看更多内容,请下载客户端

页面上显示了20首,为什么其他10首爬不到?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-19 16:18:48 | 显示全部楼层
无枝为檄 发表于 2021-6-19 15:58
页面上显示了20首,为什么其他10首爬不到?

20首是登陆后,你的代码里没有登陆。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-19 18:37:44 | 显示全部楼层
无枝为檄 发表于 2021-6-19 15:58
页面上显示了20首,为什么其他10首爬不到?

如果是6楼说的你没有登陆的话

可以尝试查看网页信息里的cookie
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-20 14:12:33 | 显示全部楼层
xiaosi4081 发表于 2021-6-19 18:37
如果是6楼说的你没有登陆的话

可以尝试查看网页信息里的cookie

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-20 14:13:30 | 显示全部楼层
suchocolate 发表于 2021-6-19 16:18
20首是登陆后,你的代码里没有登陆。

我去试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-20 17:59:03 | 显示全部楼层
我想用手机号模拟登录 为什么我找不到输入手机号的那个element呢?
  1. from selenium import webdriver
  2. from time import sleep

  3. bro = webdriver.Chrome(executable_path="./chromedriver.exe")
  4. wangyi_url = "https://music.163.com/"
  5. bro.get(wangyi_url)
  6. login_url = bro.find_element_by_xpath('//*[@id="g-topbar"]/div[1]/div/a').get_attribute("href")
  7. bro.get(login_url)
  8. bro.switch_to.frame("g_iframe")
  9. switch_btn = bro.find_element_by_id('otherbtn')
  10. switch_btn.click()
  11. agree_btn = bro.find_element_by_id("j-official-terms")
  12. agree_btn.click()
  13. cellphone_btn = bro.find_element_by_class_name("f-mgt10")
  14. cellphone_btn.click()
  15. sleep(2)
  16. # telephone = bro.find_element_by_xpath('//input[@id="p"]')
  17. telephone = bro.find_element_by_id('p')
  18. telephone.send_keys("xxx")
  19. # password = bro.find_element_by_xpath("//input[@id='pw']")
  20. password = bro.find_element_by_id("pw")
  21. password.send_keys("xxx")
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-22 13:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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