基于python的requests库实现简单的小说爬取

本文分享了从盗版小说网站抓取数据的爬虫实践,详细介绍了爬取思路、编码处理、访问限制应对及正则表达式应用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习爬虫,掌握了点匹毛,记录一下自己的学习进程.可运行代码在最后面
一.爬虫思路
  尝试去一些盗版小说网站,类似笔趣阁等网站爬取小说,整理格式,清除网页自带的一些广告语,提高阅读质量。
  1.通过目录页面来获取所有章节的链接地址以及章节名称,分别存入两个数组当中
  2.利用循环来依次访问链接地址,将章节名称以及小说内容写入打开的文本当中
二.过程的实现细节
  1.注意网站的编码方式,以及待写入txt文件的编码方式的一致性
  2.网站nginx的访问受限处理,很多网站都放在nginx上,设置了访问限制,短时间内大量访问会导致访问受阻,导致打开正则表达式匹配结果为None,后续写入失败。借助try: except :else来处理对应的AttibutionError,并让代码停止等待一段时间再次运行。
  3.对于正则表达式的匹配选择,可以在match与search两个函数中任选其一,但正则表达式的应该保持简洁优先的原则。

实现代码:

import re,sys,time	#导入使用的一些库
import requests
#https://www.runoob.com/python3/python3-reg-expressions.html	:python正则表达式相关内容链接,不清楚的可以去了解一下
def get_node_list():	#通过get_node_list函数获取小说的章节名称及链接
	url = 'http://www.biquge.info/74_74132/'	#目录地址
	url_temp = 'http://www.biquge.info/74_74132/'	#目录页面的章节地址大多只有后续部分,手动记录前面部分,用于拼接成完整地址
	resp = requests.get(url)	
	resp.encoding = 'utf-8'
	temp = re.search('<div id&#
### MATLAB中的机械臂强化学习轨迹规划 以下是基于MATLAB实现的机械臂强化学习轨迹规划的一个示例代码。该代码利用深度确定性策略梯度(DDPG)算法来优化机械臂的运动轨迹。 #### DDPG算法简介 DDPG是一种适用于连续动作空间的强化学习算法,特别适合于机械臂控制这类需要精确调节关节角度的任务[^4]。它结合了Q-learning的思想和Actor-Critic架构,能够在复杂的环境中学习到高效的控制策略。 #### 示例代码:机械臂强化学习轨迹规划 以下是一个简单的MATLAB代码框架,展示了如何使用DDPG算法进行机械臂的轨迹规划: ```matlab % 初始化参数 numEpisodes = 100; % 训练回合数 maxStepsPerEpisode = 200; % 每个回合的最大步数 stateSize = 6; % 状态维度 (例如:3个关节的角度及其角速度) actionSize = 3; % 动作维度 (例如:3个关节的速度变化) % 创建环境模型 env = createRobotEnvironment(); % 自定义函数创建机械臂模拟环境 % 定义奖励函数 rewardFunction = @(s, a) calculateReward(s, a); % 奖励计算函数 % 初始化DDPG代理 agentOptions = rlDDPGAgentOptions(); criticNetwork = createCriticNetwork(stateSize, actionSize); actorNetwork = createActorNetwork(stateSize, actionSize); agent = rlDDPGAgent(actorNetwork, criticNetwork, agentOptions); % 开始训练循环 for episodeIdx = 1:numEpisodes observation = reset(env); % 重置环境并获取初始状态 totalReward = 0; for stepIdx = 1:maxStepsPerEpisode % 获取当前动作 action = getAction(agent, observation); % 执行动作并观察新状态和奖励 [nextObservation, reward, isDone] = step(env, action); % 更新总奖励 totalReward = totalReward + reward; % 将经验存储到回放缓冲区 storeExperience(observation, action, reward, nextObservation, isDone); % 使用经验回放更新网络权重 trainOneStep(agent); % 如果达到终止条件,则退出本轮循环 if isDone break; end % 更新观测值 observation = nextObservation; end disp(['Episode ', num2str(episodeIdx), ' Total Reward: ', num2str(totalReward)]); end % 测试阶段 testEnv = createTestEnvironment(); % 创建测试环境 observation = reset(testEnv); while true action = getAction(agent, observation); [nextObservation, ~, isDone] = step(testEnv, action); plotTrajectory(nextObservation); % 可视化机械臂轨迹 if isDone break; end observation = nextObservation; end ``` #### 关键组件说明 1. **`createRobotEnvironment()`**: 这是一个自定义函数,用于初始化机械臂的仿真环境。可以通过Simulink或其他工具箱构建。 2. **`calculateReward(s, a)`**: 奖励函数的设计至关重要,通常考虑以下几个因素: - 到达目标位置的距离减小程度[^4]^。 - 避免碰撞或超出关节活动范围的情况^。 - 减少不必要的能量消耗。 3. **神经网络结构**: - Critic Network: 输入为状态-动作对 `(s,a)`,输出为估计的价值 `Q(s,a)`。 - Actor Network: 输入为状态 `s`,输出为最优动作 `a*`。 #### 结果可视化 在每次迭代结束后,可以调用绘图函数显示机械臂的实时轨迹以及最终的学习曲线。这有助于评估强化学习的效果。 --- ### 注意事项 1. 在实际应用中,可能需要针对具体任务调整超参数,如学习率、折扣因子等。 2. 对于更复杂的场景,建议引入更多的传感器数据(如摄像头输入),并通过卷积神经网络处理图像特征[^2]^。 3. 若希望进一步提升性能,可尝试其他改进版的强化学习算法,如TD3或SAC[^3]^。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值