天冷了,被窝里听小说
很久以前,小编是很喜欢看小说的。但是自从大学毕业后就很少看了,也没时间去看了。虽然没有时间去看了,但我还是会利用闲散的时间去听一听有声小说的。现在有声小说方面做的比较好的网站有“懒人听书”和“喜马拉雅”,当然还有一些其它好的网站。就我而言,是比较喜欢用“喜马拉雅”的。咱们今天的主题就跟这个网站有关。
当你在“喜马拉雅”的手机客户端听小说时,会发现它居然有广告,还是10~15秒的样子吧。但我这个人就是不爱看广告,呃,听也不喜欢。我就感觉广告很烦人。我解决的办法是把音频下载到本地,用其它播放器一样能听小说。咱们用到的工具就是python。
下面开始搞起~
第一步:确定目标网站和爬取的内容。
第二步:分析网页源代码,用正则表达式,提取音频ID,用这个ID去拼接真正的音频URL,每一个音频对应一个URL网址。
第三步:找到URL后就可以用urllib库去下载了。For循环一下,很快就下好了。
# -*- coding: gbk -*-
"""
时间:2018年3月31日 18:07:39
内容:爬取喜马拉雅‘青帝’前一百集
"""
import requests
import urllib
import re
url = "http://www.ximalaya.com/7817039/album/2900921/"
#这个网站如果不用headers伪装一下,获取不了HTML源码
data = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"}
response = requests.get(url, headers=data)
html = response.text
#用正则表达式提取音频ID
songId = re.findall(r'sound/(\d+)/', html)
#拼接json的url
for ids in songId:
requestUrl = "http://www.ximalaya.com/tracks/" + ids + ".json"
#发送josn的url
jsonUrl = requests.get(requestUrl, headers=data)
#提取目标音频url
songUrl = jsonUrl.json()['play_path_64']
#下载
urllib.request.urlretrieve(songUrl, filename = 'D:\\programme\\Python Example\\Spider\\number_two\\httpwww_ximalaya_com\\ximalaya' + songUrl[-18:])
THE END
本实例只供学习交流,请勿用于非法用途。另上述实例不一定适应当前状态的网站。
想要获取更多精彩内容,请加V信公众号:Python练习册 或 加小编V信:AA_FMspider。欢迎分享转载文章。