python爬虫练习

简介:One里面的音乐非常喜欢,但无奈不能自动下一首,车里开车很不方便,想给它下载下来,顺带学习下python爬虫

参考教程:

https://www.bilibili.com/video/BV1qJ411S7F6/?spm_id_from=autoNext

找到网页链接:
http://m.wufazhuce.com/music/3419

当你想从一个网页抓取网页中的元素,可能是图片,音频或视频,你可以通过浏览器的检查功能(这里使用Chrome浏览器内核)
在这里插入图片描述

在网络栏进行监听,点击播放,就跳出了音频元素,这就是源,可以手动进行下载
在这里插入图片描述
这里我们要用python批量下载,将名称复制,到网页源代码进行检索
在这里插入图片描述
可以找到以下内容,我们就可以根据它的规范获取源地址
在这里插入图片描述

接下来就是在python实现,在python中我们大概要实现三个步骤:

  • 请求网页(得到网页数据)
  • 解析网页(对网页数据进行提取)
  • 下载资源
网页请求使用requests库
import requests
url = "http://m.wufazhuce.com/music/3419"
response = requests.get(url)

和我们在地址栏输入url地址回车进入网页一样,python会将网页访问结果存储在response变量中,我们可以将结果以源代码形式展示出来,也可以进行各种需求调用

html = response.text
print(html)

有了网页源码,我们就可以去分析了

网页解析这里使用re库

当然有专门解析网页的库,但是我们这里用re也够了
我们通过re库去检索关键字,我们要通过这段文字规范提取url地址
在这里插入图片描述

 urls = re.findall('<source src="(.*?)">', html)

这样就得到了这个页面的音频源地址了,下载的方式是去访问这个url,将得到的文件数据写入到本地

response = requests.get(urls[0])
with open('1.mp3', 'wb') as f:
    f.write(response.content)

一个页面的过程走下来了,接下来就可以尝试对多个网页进行循环
http://m.wufazhuce.com/music/3419
我们只需要修改地址最后的数字即可,给个范围做循环

for i in range(2339, 3420):
     url = 'http://m.wufazhuce.com/music/' + str(i)

最后就是整合,优化,并解决新出现的bug

比如

  • 提取歌曲名字:方法和解析源文件地址相同,可以去找歌名所在字段用re提取
  • 有些网页因为版权问题不能播放,需要去寻找在代码中报错的原因,是因为url缺失,所以我们可以做一个判定,如果结果为空就跳过
  • 有些页面无法访问,这个在我们访问网页的时候可以去查询状态码,如果404就跳过
  • 名称包含特殊字符,由于名字是从页面上抓的,有些特殊字符导致创建文件路径时报错了,解决方法可以过滤掉非中英文数字即可,参考https://zhuanlan.zhihu.com/p/144216817

以上内容是对此次python爬虫学习进行的复习和记录,本次学习发现one的反扒措施是很薄弱的,早期很多音乐因为版权问题下架了,希望大家对版权越来越重视,让创作环境越来越好,互联网越来越成熟。

共勉
way

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值