您的位置:首页 > 产品设计 > UI/UE

使用requests和re正则表达式库爬虫小说‘斗破苍穹’,可选取任意章节下载到本地

2020-03-06 16:09 127 查看

#爬虫斗破苍穹小说,在C盘新建名为’cang’的文件夹,输入开始章节和结束章节,即可将每一章下载到单独的txt文件中
#txt的文件名为每章的标题
#下载过程中显示下载成功的章节和下载失败的章节,下载完成后显示下载用的总时间。
#由于网站上小说缺少某些章节,输入的开始章节与实际下载章节有差别,这块未细化。

import requests
import re
import time

def download_txt(i, j): #i为起始章节,J为终止章节
headers = {'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone \
OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'}

for x in range(j-i+1):  #共需要下载(j-i+1)章
url = 'http://www.doupoxs.com/doupocangqiong/{}.html'.format(i+x)  #每章对应的网址
res = requests.get(url, headers=headers)
res.encoding = 'zh-CN'

if res.status_code == 200:

title = re.findall('<h1>(.*?)</h1>', res.text, re.S)[1] #通过正则表达式获取内容,列表的第1位为标题
data = re.findall('<p>(.*?)</p>', res.text, re.S) #获取文本内容
txt = data[1:-2] #去头掐尾,截取小说内容

file = open('c:/cang/{}.{}.txt'.format(i+x, title), 'w')  #打开文件
file.write(title + '\n') #先写入标题

for t in txt:
file.write('  ' + t + '\n')  #写入正文
file.close() #关闭文件
print('{} 下载完成!'.format(title)) #提示下载进度
else:
print('第{}章下载失败!错误代码{}'.format(i+x, res.status_code)) #下载失败提示
pass

if __name__ == '__main__':
try:
time_start = time.time() #读取开始时间
start = int(input('请输入开始章节:'))
end = int(input('请输入结束章节:'))

download_txt(start, end) #调取下载函数

time_end = time.time() #读取结束时间
time_s = round(time_end - time_start) #计算时间差
print('共耗时:{}秒'.format(time_s)) #打印总耗时

except Exception as e: #若出现错误则执行
print('ERROR', e)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐