python自动化脚本-下载小说

本文实现通过基于selenium框架的python自动化脚本,实现长篇历史小说《大秦帝国》本地化下载,效果如下:

其中,requests和selenium是python爬虫过程中经常使用的。

requests较为简单,效率较高,比较适合简单的网站后台,通过模拟发送报文,接受并分析接受报文。

selenium有点复杂,效率比较低,耗费的本地资源较大,主要针对网站后台的反爬机制使用,通过模拟一个浏览器,调用浏览器,实现数据的发送和接受,并对接受报文进行解析。

爬虫过程中,优先使用requests,如果发现网站有地址或数据的访问限制,再使用selenium。

具体分析如下:

首先,分析URL变化。效果如下:

分析发现,不同的URL前半部分相同,后半部分是连续的数字+".html"组成。有规律就可以通过代码实现。

代码如下:

python 复制代码
for index in range(106231,106317):
    loadmsg('https://www.huaidan263.com/daqindiguodiyibu/'+str(index)+'.html',root_path)

其次,分析网页内容。效果如下:

分析发现,章节的标题在class为"m-article-title"的div标签下,章节的内容在class为"m-article-text"的div标签下,有规律即可成码。

代码如下:

python 复制代码
driver = webdriver.Edge()

driver.get(url)

element_title = driver.find_element(by=By.CLASS_NAME, value='m-article-title')
element_title = element_title.find_element(by=By.TAG_NAME,value='h1')
element_text = driver.find_element(by=By.CLASS_NAME, value='m-article-text')

# 关闭浏览器
driver.quit()

最后,保存到本地。创建章节标题为文件名的文件,将章节内容保存到本地即可。

代码如下:

python 复制代码
full_path = os.path.join(root_path,element_title.text+'.txt')
with open(full_path, 'w',encoding='utf-8') as f:
    f.write(element_text.text)

完整代码如下:

python 复制代码
from selenium import webdriver

from selenium.webdriver.common.by import By  # 导入 By 模块
import os

def loadmsg(url,root_path):
    # 或者使用 Edge 浏览器
    driver = webdriver.Edge()

    driver.get(url)

    element_title = driver.find_element(by=By.CLASS_NAME, value='m-article-title')
    element_title = element_title.find_element(by=By.TAG_NAME,value='h1')
    element_text = driver.find_element(by=By.CLASS_NAME, value='m-article-text')

    full_path = os.path.join(root_path,element_title.text+'.txt')
    with open(full_path, 'w',encoding='utf-8') as f:
        f.write(element_text.text)

    print(element_title.text)
    #print(element_text.text)

    # 关闭浏览器
    driver.quit()
    return

root_path = '大秦帝国第一部 黑色裂变'
# 创建目录
os.makedirs(root_path, exist_ok=True)
for index in range(106231,106317):
    loadmsg('https://www.huaidan263.com/daqindiguodiyibu/'+str(index)+'.html',root_path)
相关推荐
运维@小兵5 分钟前
安装Pycharm并破解
ide·python·pycharm
冬、不眠的夜11 分钟前
Nuitka 将 python 程序编译成 exe 指南
开发语言·python
范中勤27 分钟前
Python Asyncio 协程与 LLM 异步并发原理技术文档(与 Java 对比|彻底澄清所有误区)
python·llm·协程·并发编程·asyncio
Dmz丶27 分钟前
前端转 AI 100 天 Day 21:FastAPI 入门——从命令行到 HTTP 服务
python
QQ142207844928 分钟前
基于 Flask 的「自动任务控制台」设计与踩坑实录
后端·python·flask
吴佳浩 Alben33 分钟前
一文讲透推理引擎性能指标:TTFT、TPOT、KV命中率、并发,到底对应 vLLM / SGLang 的哪个参数?
人工智能·python·语言模型·架构·ai编程·vllm·sglang
用户2986985301434 分钟前
Python 实现 Word 转 XPS、PostScript 与 OFD 格式
后端·python·api
Patrick在香港1 小时前
你写的「比较 token」函数,正在用 36 纳秒泄露密码:时序攻击实测
python·安全·标准库·时序攻击·常量时间
蜗牛互联网1 小时前
Python Agent 工具调用:审批令牌、参数白名单和累计预算
java·开发语言·人工智能·windows·后端·python
维克兜率天1 小时前
【维克】统计套利:寻找市场的“定价误差“
人工智能·python·算法