Python爬虫实践:从中文歌词库抓取歌词
利用BeautifulSoup库构建一个简单的网络爬虫,从中文歌词库网站抓取凤凰传奇所有曲目的歌词(http://www.cnlyric.com/geshou/1927.html)。
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
import numpy
import csvstarturl="http://www.cnlyric.com/geshou/1927.html" # 凤凰传奇歌词地址第一页# 找出下一页的链接
def findnextlinks(starturl,nextlinks):""" 该函数用于从starturl页面开始,递归找出所有“下一页”的链接地址要求nextlinks为一个空的列表"""try:html=urlopen(starturl)bsobj=BeautifulSoup(html,"lxml")nextpagelink=bsobj.find("div",{"class":"PageList"}).input.\previous_sibling.previous_sibling.attrs["href"]nextlink="http://www.cnlyric.com/geshou/"+nextpagelinknextlinks.append(nextlink)findnextlinks(nextlink,nextlinks)except:print("\n所有“下一页”的链接寻找完毕")return nextlinksnextlinks=[]
nextlinks=findnextlinks(starturl,nextlinks) # 所有“下一页”的链接列表# 找出存放歌词的链接列表
def findlrclinks(urllists):""" 该函数用于找出列表urllists中的链接页面上存放歌词的链接 """Sites=[]for urllist in urllists:html=urlopen(urllist)bsobj=BeautifulSoup(html,"lxml")for link in bsobj.findAll(href=re.compile("^(../LrcXML/)")):site="http://www.cnlyric.com"+link.attrs["href"].lstrip("..")Sites.append(site)return Sitesnextlinks.insert(0,starturl) # 将开始页面也加入链接列表中
Sites=findlrclinks(nextlinks) # 找出所有存放歌词的链接
print("\n所有曲目歌词所在的xml文件链接寻找完毕")def getlrc(lrclink):""" 该函数用于找出歌词链接lrclink中的歌词,并以列表形式保存 """LRC=[]html=urlopen(lrclink)bsobj=BeautifulSoup(html,"lxml")lrcpre=bsobj.findAll("lrc")for lrclabel in lrcpre:lrc=lrclabel.get_text()LRC.append(lrc)return LRCcsvfile=open("凤凰传奇歌词集.csv","w+") # 创建csv文件用于保存数据
try:writer=csv.writer(csvfile)rowindex=1for lrcurl in Sites:LRC=getlrc(lrcurl)LRC.insert(0,str(rowindex).zfill(3))writer.writerow(LRC) # 将每首哥编号并将歌词写入从中文件中rowindex+=1
finally:csvfile.close() # 关闭csv文件
运行结果:
参考资料:Ryan Mitchell著,陶俊杰,陈小莉译《Python网络数据采集》
Python爬虫实践:从中文歌词库抓取歌词相关推荐
- Python爬虫实践(入门篇)——抓取《天使降临到我身边》图片
今天就学了一下Python爬虫,于是想实践一下.刚好一周前在B站补完番<天使降临到我身边>--里面的小学生特可爱.情节也不错,心里就比较喜欢这部漫画,所以就想扒一些图片当壁纸.刚好,Pyt ...
- python爬取app播放的视频,Python爬虫工程师必学——App数据抓取实战视频教程
爬虫分为几大方向,WEB网页数据抓取.APP数据抓取.软件系统数据抓取.本课程主要为同学讲解如何用python实现App数据抓取,课程从开发环境搭建,App爬虫必备利器详解,项目实战,到最后的多App ...
- Python爬虫 | 斗图网表情包抓取
Python爬虫 | 斗图网表情包抓取 1.数据来源分析 2.制作div_list 3.发起请求 4.保存图片 5.批量获取 6.完整代码 声明 1.数据来源分析 打开斗图吧的主页,发现网址非常有 ...
- Python爬虫实战(4):抓取淘宝MM照片
Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...
- Python爬虫之js加密破解,抓取网易云音乐评论生成词云
js破解历程 前言 技能点 界面概况 静态网页动态网页 页面解析 step1: 找参数step2:分析js函数step3:分析参数step4: 校验step5:转为python代码 编写爬虫 很多人学 ...
- python爬虫之js链接跳转抓取_Python爬虫获取页面所有URL链接过程详解
如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup ...
- Python爬虫: 用urllib2+beautifulsoup写的抓取网页内容的示例
BeautifulSoup是一个可以解析HTML或XML内容的python库,和java的Dom4j有点类似.当用urllib2抓取到网页的HTML源码之后,调用beautifulSoup的API就可 ...
- Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺
其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关评论,含有非匿名旺旺号,快一年了淘宝都没有修复这个. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语 ...
- python 爬虫课程推荐_关于递归抓取的课程推荐
Python爬虫包 BeautifulSoup 递归抓取实例详解概要:爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到另一个 ...
最新文章
- 【Android】全角字符半角字符工具类
- pycharm管理多个工程
- mysql多实例安装配置演示
- Fiddler抓包使用教程-QuickExec
- 使用python实现对于chineseocr的API调用
- 假如Python有C/C++ 的性能,会不会称霸IT界?
- SQL FILESTREAM与数据库快照,镜像,TDE和日志传送的兼容性
- python display方法_在Python中縮放和顯示圖像的最快方法是什么?
- 现代密码学第一次实验:线性移位寄存器
- 英语魔法师之语法俱乐部 | 笔记2 | 初级句型—简单句 | Chapter1—基本句型及补语
- 论文阅读:Action Genome: Actions as Composition of Spatio-temporal Scene Graphs
- uniapp中制作战力计算器
- excel拆分表格之按指定行数拆分
- TASK1_高等数学
- pin ——pin tool代码注释 各pin tool的用途
- 全球人工智能工程师 冬令营火热招生ing
- 斐波那契数列 : 斐波那契凤尾
- 输入售价后点击计算税费,自动显示在税费输入框!
- CSS3制作摇晃的吊灯
- Individual tree segmentation and tree-counting using supervised clustering
热门文章
- 【问题已解决】Unrecognized option: --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
- 在线标定新思路!SST-Calib:最新Camera-Lidar时空同步标定算法(ITSC 2022)
- 【Java编程】Java关键字final使用详解
- linux 系统部署raid 5,CentOS 7.4搭建RAID5及测试实例
- MySQL主从互换策略(主down机切换从为和恢复过程中的倒增量备份)
- python检索用人名查电话_利用Python电话本小程序!这波操作你给几分?
- 阿里云ACP认证OSS专项(1)
- 百度竞价结果中显示出网站ICO图标…
- 经典面试题:翻转英文句子中单词的顺序
- 查看和修改电脑的ip地址