IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python爬虫selenium初尝试 -> 正文阅读

[Python知识库]Python爬虫selenium初尝试


前言

初学Python爬虫,记录自己的成长,不喜勿喷


一、受害者

受害者简介:http://tool.liumingye.cn/music(哈哈,嗯,这样是不是不太友好啊),在网上找到一个可以下载部分收费音乐的网站,然后就突发奇想的要把知识运用一下。

二、失败

1.前言

一开始我是想直接用request模块爬的,但最终因为一个加密的步骤没有解决,所以最后退而取其次选择了selenium,真的是有点慢啊。(这里记录一下自己的失败吧),如果有大佬路过希望告知一下解决方法,不胜感激。

2.使用request

进入网站,随便搜一个歌曲。可以发现在下载按钮下面并没有藏着链接。
在这里插入图片描述
然后我点击下载按钮,弹出下载框,这下能找到链接了,显然这是一个动态加载出来的。
在这里插入图片描述
找到XHR在里面发现一个search的请求数据是json字符串。我心想,成了。
在这里插入图片描述
一看请求头,是一个post请求,提交的表单数据是加密了的,我心想,完了。

在这里插入图片描述
在这里插入图片描述
作为一个初生牛犊不怕虎的人,谁不想搞清楚他的密码呢?然后我就想通过一步一步的设置断点,然后实在没参透它加密的过程。大叹一声,算了!selenium不香吗?
在这里插入图片描述
以上就是整个失败过程了,懂的教教我。

三、成功~selenium

前面的装驱动部分就不细说了,网上这样的教程挺多的。把驱动放在python的路径中就行了。 这部分应该是比较简单的了,除了基本上就是打开浏览器,然后通过输入参数,点击按键,提取数据,最终拿到网址,然后下载歌曲。
import requests
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
import time

#设置无头浏览器(调试过程中不要打开)
# opt = Options()
# opt.add_argument("--headless")
# opt.add_argument("--disable-gpu")
# web = Chrome(options=opt)
web = Chrome()
web.get("http://tool.liumingye.cn/music/?page=searchPage") #进入初始搜索界面,这一步比较慢

m = input("请输入要下载的歌曲(中间用空格隔开):\n")
musics = m.split(' ') #读入数据,用空格分隔成列表。方便后面遍历下载

for music in musics:
	#找到搜索框
    search = web.find_element(by="xpath", value='//*[@id="input"]')
    #将搜索框中的历史检索词清空掉
    search.clear()
    
    #传入关键词,如歌名。后面跟\n回车,就不用在输入完后点击搜索按钮了
    search.send_keys('{}\n'.format(music)) 
    time.sleep(1) #这一步是因为,如果浏览器没有加载完就执行下一步find_element会报错,所以得休息1s
    
    #提取音乐及歌手
    musicName = web.find_element(by='xpath', value='//*[@id="player"]/div[1]/ol/li[1]/span[4]').text
    musician = web.find_element(by='xpath', value='//*[@id="player"]/div[1]/ol/li[1]/span[5]').text
    
    #点击下载按钮,动态加载出链接,然后提取href属性
    kk = web.find_element(by='xpath', value='//*[@id="player"]/div[1]/ol/li[1]/span[1]')
    kk.click() 
    link = web.find_element(by='xpath', value='//*[@id="m-download"]/div/div/div[2]/div[4]/div[2]/a[1]').get_attribute("href") 
    time.sleep(1) #同上
    ##下面几个步骤是,回到最初搜索界面,方便循环下载歌曲的
    web.find_element(by='xpath', value='//*[@id="m-download"]/div/div/div[3]/button').click()
    web.find_element(by='xpath', value='//*[@id="main"]/div[1]/div[2]/a[2]').click()
    
    通过提取的url下载并保存歌曲
    rques = requests.get(link)
    resp = rques.content
    rques.close()
    with open('Music/{}-{}.mp3'.format(musicName, musician), mode='wb') as f:
        f.write(resp)
        print("{}----下载完成".format(music))
web.close()

总结

总的来说,这个爬虫没有什么意义,里面没有多线程或协程,就当是练习吧。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 16:42:32  更:2021-12-02 16:42:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:43:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码