一、爬取的页面思路分析

1.首先我们在浏览器中打开的链接
https://www.kugou.com/yy/rank/home/1-8888.html?from=rank
2.点击F12键或者鼠标右键检查键,我们会看到如下的界面:

3.点击圆圈里面的键,放到歌曲的名称上面,直接定位到歌曲名称所在的源代码中

4.我们对于源代码进行分析,可以看到歌曲的名称存放在a标签下,它的父标签是ul标签,之后再往上分析,可以看到ul的父标签为div标签,属性为class,值为pc_temp_songlist

5.不同方法的不同选择方法

5.1 lxml(xpath) :小编的观点为选择获取信息的路径

/       :如果在最前面代表从给根节点开始选取,否则为某个节点的子节点
//      :从全局节点随机选择节点
@       :选取某个节点的属性
[]      :标签里面的信息
text() :标签下的文本信息
#歌曲信息获取
//div/ul/li/a[@class="pc_temp_songname"]/text()

5.2 BeautifulSoup(findall):小编的观点为在获取到的源代码中查找关键信息

.findall('获取的标签名称',‘属性(属性加属性值)’)
歌曲信息获取如下:
.find_all('a', class_="pc_temp_songname")

5.3 re:定义为文本的高级匹配模式,提供搜索,替换等功能。其本质是由一系列字符和特殊符号构成的字串,这个字串即正则表达式

#re库涉及到许多的知识点,在这里小编仅仅分析下面的正则表达式
r'<li class=" " title=.*?>.*?<a.*?>(.*?)</a>'
r'' 表示原生字符串
.   匹配除换行外的任意一个字符
*   匹配前面的字符出现0次或多次
?  为了让匹配重复的元字符尽可能少的向后匹配内容,在匹配重复元字符后加 ‘?’ 号即可

二、代码

lxml库和xpath
import requests
from lxml import etree
from fake_useragent import UserAgent#引入酷狗音乐的排行榜的url
url = "https://www.kugou.com/yy/rank/home/1-8888.html?from=rank"
#构造伪装的头部而不必使用自己电脑的User-Agent
headers = {"User-Agent":UserAgent().random
}#使用requsets库发送请求并返回response对象
response = requests.get(url,headers=headers)
#指定编码为‘utf-8’
response.encoding='utf-8'#调用HTML类对HTML文本进行初始化,构造XPath解析对象trees
trees = etree.HTML(response.text)
#使用xpath方法获取里面的排名,歌曲信息和时长
ranks = trees.xpath("//div/ul/li/@data-index")
songnames = trees.xpath('//div/ul/li/a[@class="pc_temp_songname"]/text()')
songtimes = trees.xpath('//div/ul/li/span/span[@class="pc_temp_time"]/text()')#定义一个列表
list = []
#zip函数以可迭代对象为输入参数,将可迭代对象里元素分别取出再组合成一个个元组,返回一个列表
for i in zip(ranks,songnames,songtimes):rank,songname,songtime = idata = {"排行":int(rank)+1,#源代码中因为排名前三被加粗,直接调用了一个属性值但是它是从零开始"歌曲": songname,"播放时长": songtime.replace("\t","").replace("\n","")}list.append(data)
print(list)

#####bs4库和BeautifulSoup

import requests
from fake_useragent import UserAgent
from bs4 import BeautifulSoupurl = "https://www.kugou.com/yy/rank/home/1-8888.html?from=rank"
headers = {"User-Agent":UserAgent().random
}response = requests.get(url, headers=headers)
#获取到的响应解码为“utf-8”
text = response.content.decode('utf-8')#创建一个soup对象(使用的解析器为lxml)
soup = BeautifulSoup(text, 'lxml')
#使用find_all方法来查询节点
songnames = soup.find_all('a', class_="pc_temp_songname")
songtimes = soup.find_all('span',class_='pc_temp_time')#定义一个列表
list = []
#排名
count = 0
for i in zip(songnames,songtimes):songname,songtime = icount +=1data = {"排行":count,"歌曲": songname.string,"播放时长": songtime.string.replace("\t","").replace("\n","")}list.append(data)
print(list)

#####re库

import requests
from fake_useragent import UserAgent
import reurl = "https://www.kugou.com/yy/rank/home/1-8888.html?from=rank"
headers = {"User-Agent": UserAgent().random
}response = requests.get(url, headers=headers)
response.content.decode("utf-8")
text = response.text#使用re.findall匹配字符串
songnames = re.findall(r'<li class=" " title=.*?>.*?<a.*?>(.*?)</a>', text, re.S)
songtimes = re.findall(r'<span class="pc_temp_time">(.*?)</span>', text, re.S)#定义一个列表
list = []
#排名
count = 0
for i in zip(songnames,songtimes):songname,songtime = icount +=1data = {"排行":count,"歌曲": songname,"播放时长": songtime.replace("\t","").replace("\n","")}list.append(data)
print(list)

三、运行结果


使用上面的三种方法,我们都可以看到结果是列表格式,里面存放的是多个字典

以上就是全部的内容,感谢你读到这里,如果在实验中出现问题,记得给我留言哟,如有错误的地方也希望你们提出来,我们一起解决!!!

Python爬虫——使用三种方法来爬取酷狗音乐的TOP榜相关推荐

  1. Python爬虫入门——2. 2爬取酷狗音乐top1-500歌曲信息

    有了第一个程序的基础,我们现在来爬取酷狗音乐top500的歌曲信息.连接http://www.kugou.com/yy/rank/home/1-8888.html 我们第一个程序只爬取了一个页面的数据 ...

  2. 爬虫训练(三):爬取酷狗音乐

    今天趁机一鼓作气,把简单爬虫内容一次学习完毕,最后以爬取酷狗音乐排行榜歌曲作为结束,然后对此次学习做一个整理和总结.而且前两篇有些混乱,这里把内容做一次阶段性总结. 一.安装包 爬虫三大包:reque ...

  3. Python爬虫之爬取酷狗音乐歌曲

    Python爬虫之爬取酷狗音乐歌曲 1.安装第三方库 在Python的语言库中, 分为Python标准库和Python的第三方库. Python标准库是在你安装Python的时候已经包含在了安装目录下 ...

  4. Python爬虫爬取酷狗音乐TOP500

    Python大作业 内容简介: 用Python来爬取酷狗音乐TOP500的歌曲信息,统计这500首歌曲中出现的所有歌手,并做可视化处理生成词云 实验代码: import time import req ...

  5. Python爬虫案例:爬取酷狗音乐全排行榜歌曲

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本次目标 爬取酷狗音乐全站排行榜歌曲 目标地址 https://www.ku ...

  6. Python爬取酷狗音乐-详解(多图预警)

    目录 1.前言 2.分析一下 1. 2. 3. 3.代码解释 4.完整代码 5.结语 1.前言 前面发布了一篇关于QQ音乐爬取的教程,但对于我们这种文艺青年来说,一个平台的歌曲怎么够我们听的,也是因为 ...

  7. Java爬虫系列之实战:爬取酷狗音乐网 TOP500 的歌曲(附源码)

    在前面分享的两篇随笔中分别介绍了HttpClient和Jsoup以及简单的代码案例: Java爬虫系列二:使用HttpClient抓取页面HTML Java爬虫系列三:使用Jsoup解析HTML 今天 ...

  8. python爬取酷狗音乐排行榜

    本文为大家分享了python爬取酷狗音乐排行榜的具体代码,供大家参考,具体内容如下 转载于:https://www.cnblogs.com/Pythonmiss/p/10799941.html

  9. scrapy_redis分布式爬取酷狗音乐

    scrapy_redis分布式爬取酷狗音乐 前言 安装scrapy_redis 创建scrapy项目 spider模块 items模块.pipelines模块 setting.py 调试 运行 成果图 ...

  10. 4步实现Java爬取酷狗音乐,so easy。

    jar包:包括:jsoup.HttpClient.net.sf.json大家可以自行去下载 1.分析是否能获得TOP500歌单 首先,打开酷狗首页查看酷狗TOP500, 是真的只让看这些还是能找到其余 ...

最新文章

  1. 掌握可视化卷积神经网络模型,带你畅游图像识别技术领域
  2. iOS10 推送必看 UNNotificationContentExtension
  3. linux磁盘虚拟化
  4. 巨蟒python全栈开发-第10天 函数进阶
  5. UILabel的行间距,字间距处理
  6. layui结合ajax实现下拉联动效果
  7. python实例 95,96
  8. 【开发环境专题一】Maven环境搭建
  9. 大数据可视化技术的挑战及应对
  10. 基于RDP瘦客户机协议的简要说明
  11. java_web基本概念
  12. matlab 反复激活无效——许可证到期
  13. 批量生成10位数手机号,用作账号注册
  14. android 类似苹果底部弹框,Android 仿苹果底部弹出Dialog
  15. 【Linux】yum(Yellow dog Updater Modified)使用简介
  16. csgo星空天空代码_csgo天空背景怎么改_csgo天空背景更改方法
  17. 关于不登陆微信如何傻瓜式查看记录
  18. shell中expr的使用介绍
  19. stm32流水灯c语言程序,STM32——流水灯程序
  20. 【计算机基础】中英文常用名词对照

热门文章

  1. C#使用SHA256哈希算法实现简单用户注册与验证
  2. 电脑中如何打开进程管理器?
  3. php的aes加密解密算法,PHP实现的简单AES加密解密算法实例
  4. VS2010 C++单元测试之gtest与OpenCppCoverage实践
  5. 盖茨与鲍尔默愤而诉Google 李开复离职有内情 -- ,买skype来控制桌面建立渠道吧
  6. Android 如何判断萤石云视频是否可以播放
  7. 【两台电脑之间实现鼠标键盘共享】
  8. ubuntu mysql的my.cnf_Ubuntu下面MySQL的参数文件my.cnf浅析
  9. centos 解压压缩包到指定目录
  10. linux中的设备管理