自学pythonのNo.5

  • 引语
  • 知识总结
    • Requests
    • XPath
  • 案例

曾经有这样的梗黑网易云音乐

实际上网易云是很不错的音乐软件之一。这个梗挺让我不舒服的,挫折谁都有,矫情没必要但对矫情之人冷嘲热讽更没必要难道不是么。题外话就到这吧。

引语

记录学习路程,抛砖引玉。如有更好的算法或者出现错误,欢迎指点。

知识总结

  1. 使用Requests库访问页面
  2. 使用XPath进行元素定位,爬取数据
  3. 解析、保存数据

Requests

Requests是Python HTTP的客户端库,编写爬虫的时候都会用到,编写起来也很简单。它有两种访问方式:Get和Post。这两者最直观的区别就是:Get把参数包含在url中,而Post通过request body来传递参数。

r = requests.post('http://xxx.com', data = {'key':'value'})
# data是传递的表单参数,data的数据类型是字典
"""
访问网易云如下:
"""
r = requests.get('http://music.163.com')

XPath

表达式含义node选取node节点的所有子节点/从根节点选取//选区所有当前节点,不考虑他们的位置.当前节点…父节点@属性选择|或,两个节点的合计text()当前路径下的文本内

表达式 含义
node 选取node节点的所有子节点
/ 从根节点选取
// 选区所有当前节点,不考虑他们的位置
. 当前节点
父节点
@ 属性选择
I 或,两个节点的合计
text() 当前路径下的文本内容

例如:

  1. xpath(‘node’) 选取了node节点的所有子节点
  2. xpath(’/div’) 从根节点上选取div节点
  3. xpath(’//div’) 选取所有的div节点
  4. xpath(’./div’) 选取当前节点下的div节点
  5. xpath(’…’) 回到上一个节点
  6. xpath(’//@id’) 选取所有的id属性
  7. xpath(’//book[@id]’) 选取所有拥有名为id的属性的book元素
  8. xpath(’//book[@id=“abc”]’) 选取所有book元素,且这些book元素拥有id= "abc"的属性
  9. xpath(’//book/title | //book/price’) 选取book元素的所有title和price元素

HTML页面中涉及到的元素如列表List缩写是li;nide,div也是html中的知识。爬取网页需要我们对网页的知识有一定的了解,学习起来也不难。对于HTML的知识不会涉及,如果需要使用以后我可以再搜索相关知识进行学习,主体是了解以及掌握基本的爬虫知识。假如想要定位到HTML中的所有列表项目,可以采用下面这段代码:

from lxml import etree
html = etree.HTML(html)
result = html.xpath('//li')

案例

强调:本案例仅限于学习分享。不用于任何商业用途。

# 爬取网易云音乐 歌手的前50首歌曲的ID和名称
import requests
from lxml import etreeheaders = {'Referer': 'http://music.163.com','Host': 'music.163.com','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8','User-Agent': 'Chrome/10'}# 得到指定歌手 热门前50的歌曲ID,歌曲名
def get_songs(artist_id):page_url = 'https://music.163.com/artist?id=' + artist_id# 获取对应HTMLres = requests.request('GET', page_url, headers=headers)# XPath解析 前50的热门歌曲html = etree.HTML(res.text)href_xpath = "//*[@id='hotsong-list']//a/@href"name_xpath = "//*[@id='hotsong-list']//a/text()"hrefs = html.xpath(href_xpath)names = html.xpath(name_xpath)# 设置热门歌曲的ID,歌曲名称song_ids = []song_names = []for href, name in zip(hrefs, names):song_ids.append(href[9:])song_names.append(name)print(href, ' ', name)return song_ids, song_names
# 设置歌手ID,陈奕迅为2116
artist_id = '2116'
[song_ids, song_names] = get_songs(artist_id)

结果如下:

/song?id=65766   富士山下
/song?id=65538   好久不见
/song?id=65533   红玫瑰
/song?id=65536   爱情转移
/song?id=28563317   阴天快乐
/song?id=65800   最佳损友
/song?id=65528   淘汰
/song?id=551816010   我们
/song?id=66282   浮夸
/song?id=64561   单车(Live)
/song?id=64634   一丝不挂
/song?id=1468192805   世界上不存在的歌 (2020重唱版)
/song?id=35403523   陪你度过漫长岁月
/song?id=64093   孤独患者
/song?id=31877628   十年(Live)
/song?id=28481103   你给我听好
/song?id=28481818   可以了
/song?id=65919   K歌之王 (Live)
/song?id=64317   因为爱情
/song?id=1462659723   Shall We Talk (Tre Lune MMXIX)
/song?id=65923   人来人往 (Live)
/song?id=64293   苦瓜
/song?id=66285   葡萄成熟时
/song?id=27867449   倾城
/song?id=65761   白玫瑰
/song?id=64126   内疚
/song?id=64048   完
/song?id=65312   明年今日 (2007 Live)
/song?id=64922   落花流水
/song?id=25730757   稳稳的幸福
/song?id=64443   约定(Live)
/song?id=64797   于心有愧
/song?id=31426608   无条件
/song?id=65769   不如不见
/song?id=64833   沙龙
/song?id=65904   十面埋伏 (Live)
/song?id=27483204   斯德哥尔摩情人
/song?id=66272   夕阳无限好
/song?id=64638   陀飞轮
/song?id=437802725   四季
/song?id=27483203   失忆蝴蝶
/song?id=64625   无人之境
/song?id=25638273   梦想天空分外蓝
/song?id=186331   最冷一天
/song?id=65758   裙下之臣
/song?id=27483202   任我行
/song?id=66265   阿牛
/song?id=64803   今天只做一件事
/song?id=33111726   喜欢一个人
/song?id=65900   防不胜防 (Live)

python爬虫No.1|爬取网易云音乐歌手的前50首歌曲ID及名字相关推荐

  1. Python爬取网易云音乐歌手歌曲和歌单(爬虫)

    Python爬取网易云音乐歌手歌曲和歌单 是 仅供学习参考 Python爬取网易云音乐网易云音乐歌手歌曲和歌单,并下载到本地 ①找到要下载歌手歌曲的链接,这里用的是: https://music.16 ...

  2. 爬虫练习:爬取网易云音乐热歌榜全部歌曲的热门评论

    目标:爬取网易云音乐热歌榜中全部歌曲(共200首)的热门评论(每首歌有15个热门评论) 分析: 需要分两步走,第一步是定位到热歌榜单所在的资源,从而得到这热歌榜中到底有哪些歌并获得每首歌的id:第二步 ...

  3. Python爬虫—爬取网易云音乐【热歌榜】歌曲的精彩评论(写入txt文本文件或者MySQL数据库)

      最近在学Python爬虫,看了Blibili爬取网易云音乐评论的视频,视频中是将一首歌的评论存入json文件,我在此代码的基础上扩展了三点:     1.爬取热歌榜200首歌曲的精彩评论:     ...

  4. Python爬虫实战: 爬取网易云歌单

    这篇文章,我们就来讲讲怎样爬取网易云歌单,并将歌单按播放量进行排序,下面先上效果图 1.用 requests 爬取网易云歌单 打开 网易云音乐 歌单首页,不难发现这是一个静态网页,而且格式很有规律,爬 ...

  5. Python带你面向对象爬取网易云音乐

    网易云音乐网页版API接口 前缀(主域名):http://music.163.com 1.1 获取歌词 请求地址:/api/song/lyric?id=xxxxx&lv=1&kv=1& ...

  6. 用selenium和BeautifulSoup爬取网易云音乐歌手id

    本人正在点亮爬虫技能树,写blog以记录 selenium和bs4介绍 Selenium 自动化测试工具.它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你 ...

  7. 多线程爬取网易云音乐热歌榜 200首音乐

    # 导入requests网络请求模块 import requests # 导入lxml标签匹配模块 from lxml import etree # 导入re 正则匹配模块 import re #导入 ...

  8. 【python】爬虫入门:爬取网易云音乐的歌曲评论、用户歌单、用户听歌记录等

    目录 一.概述 二.爬取流程 1.爬取评论 1.1.资源定位 1.2.爬取准备 1.3.代码实现 2.爬取听歌记录 2.1.资源定位 2.2.爬取准备 2.3.js劫持 三.总结 一.概述 第一次学爬 ...

  9. python爬虫音乐犯法么_Python爬虫案例:爬取网易云音乐

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:Jonsson 喜欢的朋友欢迎关注小编,除了分享技术文章之外还有很多 ...

最新文章

  1. Codeforces 894.D Ralph And His Tour in Binary Country
  2. 独家|OpenCV 1.6 改变图像的对比度和亮度!
  3. Java 基本功之(二)Java 面向对象
  4. socket开发:一台服务器同一端口同时在多个网卡上开启listen的误区理解。
  5. eclipse 收缩 选择行_阳台晾衣架不是只能装天花板上,学学日本,挂护栏上折叠收缩轻松...
  6. 插件~NuGet与packages管理项目的包包
  7. 内存位置访问无效 midas.dll_内存虚拟化介绍
  8. dotnet core调试docker下生成的dump文件
  9. r语言r-shiny_使用Shiny和R构建您的第一个Web应用程序仪表板
  10. 2012年3月编程语言排行榜:JavaScript超越Perl和Python
  11. classes目录绝对路径
  12. Oracle_linux_lesson_p2
  13. python数字转换成中文大写_python中如何将货币数字转化成汉字大写金额
  14. python 实现软件激活码验证
  15. 小程序自动定位当前位置
  16. 神经机器翻译中的曝光偏差,幻觉翻译与跨域稳定性
  17. font color=red[置顶]/font
  18. bat文件改成sh文件在linux上运行java程序
  19. 像素时代的黄昏和“淘宝叛军”
  20. 怎 样 寻 找 安 全 漏 洞 (转)

热门文章

  1. 苹果公司商业模式分析
  2. stty详解-Unix/Linux编程实践教程第五章 学习stty
  3. ## 线上实验五:2个2位二进制乘法器
  4. nova VirtualInterfaceCreateException (by quqi99)
  5. java apply 函数_Js(Javascript)中的apply方法的使用
  6. destoon 标签
  7. 刺激消费的线上盲盒运营解析,你知道盲盒吗
  8. 快速制作机房3D效果图教程 1
  9. anchor-based和anchor free
  10. mysql xf0x9fx8ex88_【MySQL】存储emoji表情报错(Incorrect string value: '\xF0\x9F\x98\x82\xF0\x9F...')的解决方案...