python webdriver点击指令_让程序像人一样的去批量下载歌曲?Python采集付费歌曲...

v2-b0ac3f651af8bf7114ffd738baadacf0_1440w.jpg?source=172ae18b

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

点击此处,获取海量Python学习资料!

今天来教大家一个自动化爬虫的工具 selenium

selenium

Selenium 是一个 Web 的自动化测试工具,最初是为网站自动化测试而开发的,就像玩游戏用的按键精灵,可以按指定的命令自动操作。

Selenium 测试工具直接操控浏览器中,就像真正的用户在操作一样。Selenium 可以根据的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生等。

项目目标

今天的目标是爬取付费歌曲

受害者地址

http://tool.liumingye.cn/music/?page=homePage

v2-f8f759917fde2cf9d35101b59f8afddc_b.jpg

先给大家看下效果

爬虫代码

导入工具

import time
import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

解析网页

打开F12 开发者工具,不管三七二十一,先来一顿瞎分析~

v2-c8c5b1881d52ae1c05abab36174def4d_b.jpg

哦豁~ 这里面居然有数据接口,还是post请求,那这样的话就咱们就看它的data参数,那里有变化

v2-0b1675da3a81484e97321fe9f44eaa30_b.jpg

v2-efc758c7054a6c04d77c6509f782a6f9_b.jpeg
driver = webdriver.Chrome(executable_path='chromedriver.exe', options=chrome_options)
# key_world = input('请输入歌手名字:')
driver.get('http://tool.liumingye.cn/music/?page=searchPage')
driver.find_element_by_css_selector('#input').send_keys('张杰')
driver.find_element_by_css_selector('#search  button:nth-child(2) i').click()
def download(name, url):
    filename = 'C:UsersAdministratorDesktop音乐' + name + '.mp3'
    response = requests.get(url=url)
    with open(filename, mode='wb') as f:
        f.write(response.content)

def drop_down():
    """模拟人去滚动鼠标向下浏览页面"""
    for x in range(1, 20, 10):
        time.sleep(0.5)
        j = x / 10
        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        driver.execute_script(js)


lis = driver.find_elements_by_css_selector('#player li')
f = 0
for li in lis:
    f += 1
    name = li.find_element_by_css_selector('.aplayer-list-title').text
    li.find_element_by_css_selector('.aplayer-list-download').click()
    down_url = driver.find_element_by_css_selector('#m-download > div > div > div.modal-body > div:nth-child(6) > div.input-group-append > a.btn.btn-outline-secondary.download').get_attribute('href')
    driver.find_element_by_css_selector('#m-download > div > div > div.modal-header > button').click()
    # time.sleep(1)
    download(name, down_url)
    print(name, down_url)
    if f % 10 == 0:
        drop_down()

运行代码后,效果如下

v2-7c37acc1f7f1c9af9279b483827fec31_b.jpg

v2-ae3e650c5aed221c5c5089d30808a05d_b.gif

v2-4fb767340bfc37da31749aad17681fc9_b.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Python来爬取网易云音乐的付费歌曲,你可以使用第三方库来模拟浏览器行为进行登录和获取数据。以下是一个基本的步骤: 1. 安装所需的库: ``` pip install requests pip install selenium pip install beautifulsoup4 ``` 2. 导入所需的库: ```python import time import requests from selenium import webdriver from bs4 import BeautifulSoup ``` 3. 使用Selenium打开网易云音乐登录页面并进行登录: ```python driver = webdriver.Chrome() # 根据自己的浏览器选择合适的驱动 driver.get("https://music.163.com/") time.sleep(3) # 等待页面加载完成 # 找到登录按钮并点击 login_btn = driver.find_element_by_xpath('//a[@href="#login"]') login_btn.click() time.sleep(1) # 切换到iframe中的登录表单 iframe = driver.find_element_by_xpath('//iframe[@frameborder="no"]') driver.switch_to.frame(iframe) # 找到使用手机号登录的选项并点击 phone_login_btn = driver.find_element_by_xpath('//a[@data-action="login:switch"]') phone_login_btn.click() time.sleep(1) # 输入手机号和密码,并点击登录 phone_input = driver.find_element_by_name('phone') password_input = driver.find_element_by_name('password') login_submit_btn = driver.find_element_by_xpath('//a[@data-action="login"]') phone_input.send_keys('你的手机号') password_input.send_keys('你的密码') login_submit_btn.click() time.sleep(3) # 等待登录完成 ``` 4. 使用Requests库获取付费歌曲的HTML页面: ```python # 打开付费歌曲页面 url = 'https://music.163.com/#/search/m/' driver.get(url) time.sleep(3) # 等待页面加载完成 # 找到搜索框,并输入要搜索的歌曲名 search_input = driver.find_element_by_id('srch') search_input.send_keys('歌曲名') search_input.submit() time.sleep(3) # 等待搜索结果加载完成 # 获取搜索结果的HTML页面 page_source = driver.page_source ``` 5. 使用BeautifulSoup解析HTML页面,提取付费歌曲信息: ```python soup = BeautifulSoup(page_source, 'html.parser') # 找到付费歌曲所在的标签或类名,并提取信息 paid_songs = soup.find_all('div', class_='xxx') # 根据实际情况修改类名或标签 for song in paid_songs: # 提取歌曲的名称、歌手等信息 name = song.find('a', class_='xxx').text artist = song.find('span', class_='xxx').text price = song.find('span', class_='xxx').text # 处理提取到的信息... ``` 这只是一个基本的爬取网易云音乐付费歌曲的示例,具体的实现可能会因网页结构的变化而有所不同。在实际应用中,你可能还需要处理登录验证码、处理分页等其他操作。请确保遵守网易云音乐的相关规定和法律法规。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值