python下载小说合集
这里以金庸老先生小说合集为例。
1. 数据抓取
首先,我们需要找到小说网站,jinyong.zuopinj.com

其次通过浏览器分析工具,分析页面数据。
2.具体实现
每本书都有对应的书籍ID,每本书相应的章节数ID,根据这两个信息,我们可完成如下代码。
def get_chapter(url): html = requests.get(url, timeout=30) # 处理网页乱码问题 html.encoding = html.apparent_encoding # print(html.text) res = html.text # 解析html soup = BeautifulSoup(res, "lxml") story = soup.find('title').get_text().split()[0] h1 = soup.find('h1').text # 获取章节内容 text = soup.find('div', id='htmlContent') # 处理章节内容 content = text.get_text('\n', 'br/').replace('\n', '\n ') content = content.replace(' ', '\n ') # print(story) # print(h1) # print(content) result = h1+'\n\n\n'+content+'\n\n' save_file(story, result)
金庸首页小说总共有15本,采用循环方法去获取小说数据。期间加了多线程和进度条效果,让代码运行速度更快更美观。
for i, book in enumerate(books): print("正在下载《{0}》小说中...".format(book)) pbar = tqdm(total=page[i+1]+1-page[i]) for num in range(page[i], page[i+1]): url = "http://jinyong.zuopinj.com/{0}/{1}.html".format(order[i], num) # time.sleep(1) # 加入多线程 t = threading.Thread(target=get_chapter, args=(url, )) t.start() t.join() pbar.update(1) print("《{0}》小说下载完成...".format(book)) pbar.close()
效果图如下:


更多详情,请参考原文
https://mp.weixin.qq.com/s?__biz=Mzg3OTExODI3OA==&mid=2247484273&idx=1&sn=eece8c7c98e38e192643d7fcb3c2b70e&chksm=cf0811d8f87f98ce93c3c8f218d946276306f09c4cb6f404e11f5b293be2d07c4ce007deced0&token=1994335322&lang=zh_CN#rd


浙公网安备 33010602011771号