无枝为檄 发表于 2021-6-19 11:08:52

网易云音乐

为什么只能爬到10首歌呢?歌单里不止10首{:10_277:}
#!/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 +=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+"因出错没有下载")

xiaosi4081 发表于 2021-6-19 11:09:49

可能是要翻到下一页的

可以试着加上"page"参数

无枝为檄 发表于 2021-6-19 15:32:36

xiaosi4081 发表于 2021-6-19 11:09
可能是要翻到下一页的

可以试着加上"page"参数

页面里面没有翻页这个按钮
你说的page参数是加在哪里呢?

南归 发表于 2021-6-19 15:39:53

查看更多内容,请下载客户端

无枝为檄 发表于 2021-6-19 15:58:25

南归 发表于 2021-6-19 15:39
查看更多内容,请下载客户端

页面上显示了20首,为什么其他10首爬不到?

suchocolate 发表于 2021-6-19 16:18:48

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

20首是登陆后,你的代码里没有登陆。

xiaosi4081 发表于 2021-6-19 18:37:44

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

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

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

无枝为檄 发表于 2021-6-20 14:12:33

xiaosi4081 发表于 2021-6-19 18:37
如果是6楼说的你没有登陆的话

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

好{:10_254:}

无枝为檄 发表于 2021-6-20 14:13:30

suchocolate 发表于 2021-6-19 16:18
20首是登陆后,你的代码里没有登陆。

我去试试{:10_254:}

无枝为檄 发表于 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/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")
页: [1]
查看完整版本: 网易云音乐