一些注意事项:

1.看了Coursera上面的python教程,里面给了一个非常简单的示例,只传一个url就获取到响应报文。然而很多网站是不能只通过一个url就响应请求的,你还需要填写报文头部也就是header部分。

2.得到的报文里面中文字符都是bytes,十六进制的格式,需要用utf-8解码

3.巧用控制台找到页面内容真实的网址

其余的注意点我都写在注释里了,完整源码如下:

#爬取网易云音乐我的歌单里面所有歌曲的歌词

import json

import requests

import re

import urllib

from bs4 import *

url = "http://music.163.com/playlist?id=129816983"

headers = {"Host":" music.163.com",

"User-Agent":" Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0",

#不必要的header属性可能会影响响应报文的编码方式,所以把它们注释掉

#"Accept":" text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",

#"Accept-Language":" zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",

#"Referer":"http://music.163.com/",

#"Cookie": "JSESSIONID-WYYY=k52%2FPjMyNbX0v38jH2efUXwEIZpw2NagEUzwTX%2FgifMsoMswU6yo3NN%5C%2Bb9jCpsRFZIc6lvPUK9wEjgBzwM%2B1T%2FRyvRGHhqyWbdvEcugCbNqTihfxHK1el66fk%2BNntcSwGVOBMEwlcFDBusingcH76NIeAQwbC6h%5CcipxCdO8T5IfBVO%3A1510825875526; _iuqxldmzr_=32; _ntes_nnid=e5ec3ba6b841b9d3eadcb910066f4dcb,1510815153893; _ntes_nuid=e5ec3ba6b841b9d3eadcb910066f4dcb; __utma=94650624.1386008069.1510815154.1510815154.1510824076.2; __utmz=94650624.1510815154.1.1.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmb=94650624.2.10.1510824076; __utmc=94650624",

#"Connection": "keep-alive",

#"Upgrade-Insecure-Requests": "1"

}

#只传url不能获得响应,需要传header

request = urllib.request.Request(url,headers=headers)

response = urllib.request.urlopen(request)

#不decode的话text是十六进制,不是中文

html = response.read().decode('utf-8','ignore')

soup = BeautifulSoup(html)

#打开1.txt 把歌单中的歌词写入

f=open('C:/Users/liuxu/Desktop/myfavoritesong.txt','w',encoding='utf-8')

for item in soup.ul.children:

#取出歌单里歌曲的id  形式为:/song?id=11111111

song_id = item('a')[0].get("href",None)

#利用正则表达式提取出song_id的数字部分sid

pat = re.compile(r'[0-9].*$')

sid = re.findall(pat,song_id)[0]

#这里的url是真实的歌词页面

url = "http://music.163.com/api/song/lyric?"+"id="+str(sid)+"&lv=1&kv=1&tv=-1"

html = requests.post(url)

json_obj = html.text

#歌词是一个json对象 解析它

j = json.loads(json_obj)

try:

lyric = j['lrc']['lyric']

except KeyError:

lyric = "无歌词"

pat = re.compile(r'\[.*\]')

lrc = re.sub(pat,"",lyric)

lrc = lrc.strip()

#print(lrc)

f.write(lrc)

f.close()

python爬取网易云音乐歌词_python3爬取网易云音乐歌单里的歌词(含源码)相关推荐

  1. 网易云歌单添加到php,[PHP源码]PHP获取网易云音乐mp3直链

    释放双眼,带上耳机,听听看~! 大家好,今天给大家分享一个可以通过PHP直接获取网易云音乐的直链的代码,喜欢的就分享下吧~ 部分音乐可能因为版权或者其他原因,用这个php脚本可能获取不到 请见谅! h ...

  2. python网络爬虫-爬虫实战-(爬取网易云薛之谦歌单里歌曲并下载)

    1.导入要用到的库 #导入库 import requests from fake_useragent import UserAgent from lxml import etree import re ...

  3. 网易云爬取首页歌单里的所有歌曲

    网易云爬取首页歌单里的所有歌曲 前言:本文章仅供个人参考使用,非商用用途,其中参考了其他的文献资料,如有不妥之处,请联系本人邮箱:wurenjie8@163.com 思路:通过首页URL获取所有首页的 ...

  4. python利用charles爬虫爬取下载qq音乐歌单里的歌曲——多进程

    因为这是我第一个独立实践的爬虫项目,所以这次把思路都放上来了 特别注意,用的是charles,可以拦截查看url 知识点: ·······利用charles分析网页,抓包,得出对应URL ······ ...

  5. 微信小程序之网易云音乐(五)- 排行详情页、歌单详情页、播放器组件开发

    微信小程序之网易云音乐(五)- 排行详情页.歌单详情页.播放器组件开发 一. 排行详情页模块 二. 歌单详情页模块 三. 播放器组件 微信小程序之网易云音乐导航 一. 排行详情页模块 rank.vue ...

  6. python爬取豆瓣读书top250并保存xls(含源码)

    python爬取豆瓣读书top250并保存xls(含源码) 又是霍霍豆瓣的一天O(∩_∩)O哈哈~. 目标网站:http://book.douban.com/top250/ 全军出击!!! 首先,按下 ...

  7. 多线程采集网易云所有歌单里歌曲url(爬虫)

    简单多线程,利用地址池创建多线程,n倍提高爬虫速度,获取音乐文件破解中 import re import time import json import datetime import threadi ...

  8. 简单音乐播放器html+css+基础vue+含源码,有搜索和播放mv功能,代码可直接复制用。

    题目:html+css+基础vue实现的简单音乐播放器(含源码),有搜索和播放mv功能,代码可直接复制用. 问题描述: 如果vue刚入门,掌握一些基础语法后就可以写一个简单的音乐播放器来练练手~~如果 ...

  9. 【python自动化测试】京东|淘宝|秒杀12306抢票程序揭秘!一起薅羊毛吧【含源码】

    相信老铁们应该也看过很多这样的视频或者帖子:python自动秒杀的程序,京东,淘宝,大麦网抢票,秒杀抢购抢茅台,12306抢票,还有python薅羊毛的,感觉好像需求挺大的,很多人感兴趣.我也看了一些 ...

  10. python视频网站项目_Python开发教育网站项目实例教学(105集视频课程含源码)

    Python开发教育网站项目实例教学(105集视频课程含源码)课程简介: Python开发教育网站项目实例教学(105集视频课程含源码)通过这105集Python实例视频课程的学习,学员可以掌握到使用 ...

最新文章

  1. 【STM32】FreeRTOS 系统配置
  2. What you should do if you want to become more professional in career?
  3. linux中查看用户组标识符,Linux用户和组管理
  4. 第九十二期:多少程序员注意到了「中台」的背面?
  5. python类的多态_8.python之面相对象part.6(python类中的多态与多态性)
  6. 多用类型常量,少用#define预处理指令
  7. js判断是对象还是集合
  8. 【标书应用场景】畅写Office为电子招投标提速赋能,助力项目招投标业务数字化转型
  9. 淘宝/天猫商品优惠券查询API接口,优惠券API接口
  10. 微信小程序switch组件尺寸控制
  11. .NET周报【11月第1期 2022-11-07】
  12. ACM简单题——不能被3整除的数
  13. 51单片机 静态数码管显示
  14. SQL Sever 远程计算机拒绝网络连接,错误:1225 具体解决步骤。
  15. 美国一大学向勒索软件缴纳114万美元赎金,以防学术数据曝光
  16. csol服务器显示乱码,我家玩反恐精英OL进入房间开始游戏后老是出现乱码怎么办? 爱问知识人...
  17. LISP标注路线桩号_如何用AutoLisp编写自动标注里程桩程序?
  18. Drupal主题开发指南(5.x)
  19. 杭电计算机学院老师,杭州电子科技大学计算机学院导师教师师资介绍简介-李平...
  20. PP-LCNet 一个轻量级的CPU卷积神经网络

热门文章

  1. 数控g71编程实例带图_数控编程代码g71 数控g71编程实例有图
  2. java删除文件目录及文件_Java删除文件,目录
  3. 好看的电脑桌面悬浮时钟工具
  4. 使用struts框架接受http请求过来的get和post数据的方法:
  5. python 生成wifi密码字典_python生成密码字典的方法
  6. 简单介绍三级分销系统开发源码
  7. pycharm 改成中文亲测好用
  8. Tableau Desktop 最新版安装教程
  9. ryujinx模拟器linux安装教学,switch模拟器Ryujinx
  10. Java学习路线|【完整版】