室友喊着没有小说看,让我给他推荐几本,这能难倒我?
分分钟就用python给他把整个网站的小说都给下载下来了,不愧是我啊!
话不多说,我们直接开整! (文末送读者福利)

要准备的东西
软件
python 3.8
pycharm
使用的模块
requests >>> pip install requests 数据请求
parsel >>> pip install parsel 数据解析
(完善功能) 添加搜索功能 搜索小说名字或者作者名字
tqdm >>> pip install tqdm 下载进度条显示模块
pandas >>> pip install pandas 输入的格式好看一些
win + R 输入cmd 输入安装命令 pip install 模块名 ;
如果出现爆红,可能是因为,网络连接超时,切换国内镜像源;
黄色是警告 ,可以忽略;
输入小说名下载

打包成exe程序, 是需要安装 pyinstaller ,命令提示符窗口输入 pip install pyinstaller
# 导入数据请求模块
import requests
# 导入数据解析模块
import parsel
# 导入正则表达式模块
import re
# 导入pandas
import pandas as pd
# 导入进度条显示模块
from tqdm import tqdmwhile True:key_word = input('请输入你想要下载的小说名字(输入0即可退出): ')if key_word == '0':breaksearch_url = f'https://www.***.com/search.php?q={key_word}'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36'}response = requests.get(url=search_url, headers=headers)# print(response.text)selector_1 = parsel.Selector(response.text)divs = selector_1.css('.result-list div.result-item')# print(divs)if divs:lis = []for div in divs:novel_name = div.css('.result-game-item-title-link::attr(title)').get() # 小说名字href = div.css('.result-game-item-title-link::attr(href)').get().split('/')[2] # IDauthor = div.css('.result-game-item-info p:nth-child(1) span:nth-child(2)::text').get() # 作者# print(novel_name, href, author)dit = {'书名': novel_name,'作者': author,'书ID': href,}lis.append(dit)print(f'一共搜索到{len(lis)}条数据内容, 结果如下')search_data = pd.DataFrame(lis)print(search_data)key_num = input('请选择你想要下载小说序号: ') # 输入的数据类型字符串数据novel_id = lis[int(key_num)]['书ID']url = f'https://www.***.com/book/{novel_id}/'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36'}response = requests.get(url, headers)# print(response.text) # 正则表达式提取出来数据返回列表 ['天道修改器']novel_name = re.findall('
(.*?)
', response.text)[0]novel_info = re.findall('
(.*?)
', response.text)# print(novel_name)# print(novel_info)for novel_url, novel_title in tqdm(novel_info):# 'https://www.***e.com/book/60126/14362.html'novel_url = 'https://www.***.com' + novel_url# print(novel_url, novel_title)# 1. 发送请求, 对于刚刚分析得到的url地址发送请求# url = 'https://www.biqugee.com/book/60126/14362.html'response = requests.get(novel_url, headers) # 返回response响应对象, 200表示请求成功# 2. 获取数据, 获取服务器返回的response响应数据# response.text 获取响应体返回文本数据(网页源代码)# print(response.text)# 3. 解析数据, 提取我们想要的数据内容 小说章节名字 以及小说内容# 提取数据方式: xpath css re 这三种方式都是可以提取数据selector = parsel.Selector(response.text) # 把获取到的response.text 转换成 selector 对象# novel_title = selector.css('.bookname h1::text').get() # get获取第一个标签数据 返回字符串数据# novel_title_1 = selector.xpath('//*[@]/h1/text()').get() # get获取第一个标签数据 返回字符串数据novel_content_list = selector.css('#content::text').getall() # getall 获取所有标签内容, 返回列表数据# 需要把列表转成字符串数据 join \n换行符novel_content = '\n'.join(novel_content_list)# print(novel_title)# print(novel_title_1)# print(novel_content_list)# print(novel_content)# 4. 保存数据# w写入数据但是覆盖 a写入追加写入, 写入文件末尾 b 二进制模式"""第一章 xxx小说内容第二章 xxx小说内容"""with open(novel_name + '.txt', mode='a', encoding='utf-8') as f:f.write(novel_title)f.write('\n')f.write(novel_content)f.write('\n')# print('正在保存', novel_title)else:print('请正确输入小说名字或者作者名字 / 没有这本书的数据..')
读者福利:知道你对Python感兴趣,便准备了这套python学习资料
对于0基础小白入门:
如果你是零基础小白,想快速入门Python是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面还可以找到适合自己的学习方案
包括:Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等学习教程。带你从零基础系统性的学好Python!
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(学习教程文末领取哈)

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

检查学习结果。



这份完整版的Python全套学习资料已为大家备好,朋友们如果需要可以微信扫描下方二维码添加,输入"领取资料" 可免费领取全套资料【有什么需要协作的还可以随时联系我】朋友圈也会不定时的更新最前言python知识。

这世界上赚钱成本最低的就是:用知识投资大脑
人生什么时候学习都不晚,晚的是你一直想学却一直没有行动,而导致大量内耗
最后祝你学习愉快
了解python的前景:https://blog.csdn.net/weixin_49891576/article/details/127187029
python有什么用:https://blog.csdn.net/weixin_49891576/article/details/127125308
上一篇:关于赞美家乡的诗词