鱼C论坛

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

网易云音乐

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

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

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

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

headers = {
    "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"
    }
url = "https://music.163.com/playlist?id=6775871260"
# url = "https://music.163.com/playlist?id=6731975194"
page_text = req.get(url=url,headers=headers).text
tree = etree.HTML(page_text)
id_list = tree.xpath('//*[@id="song-list-pre-cache"]//a/@href')
name_list = tree.xpath('//*[@id="song-list-pre-cache"]//a/text()')
i = 0
print(name_list,id_list)
#为毛只有10首??
if not os.path.exists("./wangyi list music"):
    os.mkdir("./wangyi list music")
try:
    for id_ in id_list:
        id_ = id_.split('=')[-1]
        name = name_list[i]
        i +=1
        base_url = "http://music.163.com/song/media/outer/url?id=%s.mp3" % id_
        content = req.get(url=base_url,headers=headers).content
        with open("./wangyi list music/"+name+".mp3",'wb') as fp:
            fp.write(content)
            print(name+".mp3下载完成!")
except FileNotFoundError or OSError:
    print(name+"因出错没有下载")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

可以试着加上"page"参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

可以试着加上"page"参数

页面里面没有翻页这个按钮
你说的page参数是加在哪里呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-19 15:39:53 | 显示全部楼层
查看更多内容,请下载客户端
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

页面上显示了20首,为什么其他10首爬不到?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

20首是登陆后,你的代码里没有登陆。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

可以尝试查看网页信息里的cookie
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

使用道具 举报

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

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

使用道具 举报

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

bro = webdriver.Chrome(executable_path="./chromedriver.exe")
wangyi_url = "https://music.163.com/"
bro.get(wangyi_url)
login_url = bro.find_element_by_xpath('//*[@id="g-topbar"]/div[1]/div/a').get_attribute("href")
bro.get(login_url)
bro.switch_to.frame("g_iframe")
switch_btn = bro.find_element_by_id('otherbtn')
switch_btn.click()
agree_btn = bro.find_element_by_id("j-official-terms")
agree_btn.click()
cellphone_btn = bro.find_element_by_class_name("f-mgt10")
cellphone_btn.click()
sleep(2)
# telephone = bro.find_element_by_xpath('//input[@id="p"]')
telephone = bro.find_element_by_id('p')
telephone.send_keys("xxx")
# password = bro.find_element_by_xpath("//input[@id='pw']")
password = bro.find_element_by_id("pw")
password.send_keys("xxx")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 06:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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