自己喜欢听有声小说,常用的网站只能一集一集下载,因此想到用python写一个批量下载的程序,不过几乎没有用过python,所以以下的代码几乎是东拼西凑出来的,不过还是放出来和大家交流一下。[Python] 纯文本查看 复制代码 import urllib.request
from urllib.request import urlretrieve
from urllib.parse import quote
import re
import time
def cbk(a, b, c):
per = 100.0 * a * b / c
if per > 100:
per = 100
print('%.2f%%'%per)
req = urllib.request.Request('http://www.ting89.com/books/14657.html')
file = urllib.request.urlopen(req)
data = file.read().decode('gbk')
result = re.findall("""<a href='/down/\?[^-]+-\d+.html' target="_blank">([0-9]{3}_[^<]+)</a>""", data)
base_url = 'http://mp3-2.ting89.com:9090/2017/34/抬棺匠/'
for index in range(236, len(result)):
down_url = base_url + result[index] + '.mp3'
urlretrieve(quote(down_url,safe='/:?='), 'E:\python\%s.mp3'%(result[index]), cbk)
print("%s 已下载完毕!"%(result[index]) + '.mp3')
time.sleep(2)
可以看到,小说所在地址,和下载地址基址都是自己给出的,所以比较low
整个过程的主要难点有两个,一个是匹配章节名称时正则表达式的编写;还有一个就是urlretrieve是不支持中文url的,因此需要使用quote转换成ascii编码形式。最后的sleep是因为如果连续下载,远程服务器会强制中断连接,因此在下载之间加了延时。
另外第一次发帖,如果有什么犯规,希望及时指出
|