91 lines
3.2 KiB
Markdown
91 lines
3.2 KiB
Markdown
|
|
# 问题诊断与解决方案
|
|||
|
|
|
|||
|
|
## 问题描述
|
|||
|
|
程序运行在处理文章的时候,没有运行到`process_link`函数,所有的好像都跳过了。
|
|||
|
|
|
|||
|
|
## 问题诊断过程
|
|||
|
|
|
|||
|
|
### 1. 初步分析
|
|||
|
|
通过运行诊断脚本(`debug_process.py`),发现:
|
|||
|
|
- Excel文件读取正常,有13个链接
|
|||
|
|
- 链接过滤逻辑正常
|
|||
|
|
- 违禁词配置正常
|
|||
|
|
- 最小文章长度设置为102字符
|
|||
|
|
|
|||
|
|
### 2. 日志分析
|
|||
|
|
从`article_replace.log`中可以看到:
|
|||
|
|
- "总共13个链接" 重复多次(说明循环执行多次)
|
|||
|
|
- "开始处理链接" 确实被调用了
|
|||
|
|
- 但之后没有任何输出,说明函数提前返回了
|
|||
|
|
|
|||
|
|
### 3. 深入调查
|
|||
|
|
通过测试发现真正的问题:
|
|||
|
|
|
|||
|
|
#### 问题1:Selenium函数被注释
|
|||
|
|
在`get_web_content.py`中,所有的文章提取函数都调用了`get_webpage_source_selenium()`,但这个函数被注释掉了,导致程序无法获取动态网页内容。
|
|||
|
|
|
|||
|
|
#### 问题2:网络请求配置问题
|
|||
|
|
即使切换到requests(`get_webpage_source`),也没有配置代理设置,导致网络连接失败。
|
|||
|
|
|
|||
|
|
#### 问题3:网页结构问题
|
|||
|
|
使用requests获取的HTML是动态加载的,包含大量JavaScript代码,实际内容需要通过浏览器渲染后才能获取。
|
|||
|
|
|
|||
|
|
## 解决方案
|
|||
|
|
|
|||
|
|
### 1. 修复Selenium函数
|
|||
|
|
重新启用并修复了`get_webpage_source_selenium()`函数:
|
|||
|
|
- 添加了必要的导入
|
|||
|
|
- 使用`webdriver_manager`自动管理ChromeDriver
|
|||
|
|
- 添加了适当的等待时间
|
|||
|
|
- 增加了异常处理
|
|||
|
|
|
|||
|
|
### 2. 修改提取函数
|
|||
|
|
将所有文章提取函数改回使用Selenium:
|
|||
|
|
- `toutiao_w_extract_content()`
|
|||
|
|
- `toutiao_extract_content()`
|
|||
|
|
- `wechat_extract_content()`
|
|||
|
|
- `wangyi_extract_content()`
|
|||
|
|
- `souhu_extract_content()`
|
|||
|
|
|
|||
|
|
### 3. 添加详细的日志记录
|
|||
|
|
在`main_process.py`中添加了详细的日志记录:
|
|||
|
|
- 记录每个提取步骤
|
|||
|
|
- 记录标题、内容长度
|
|||
|
|
- 记录各种提前返回的原因
|
|||
|
|
- 记录违禁词检查结果
|
|||
|
|
|
|||
|
|
### 4. 添加网络请求代理配置
|
|||
|
|
在`get_webpage_source()`中添加了代理配置,避免系统代理的干扰。
|
|||
|
|
|
|||
|
|
## 修复后的流程
|
|||
|
|
|
|||
|
|
1. **Excel读取** - 正常
|
|||
|
|
2. **链接过滤** - 正常
|
|||
|
|
3. **网页内容提取** - 使用Selenium获取动态内容
|
|||
|
|
4. **标题和内容提取** - 使用多个CSS选择器尝试
|
|||
|
|
5. **内容验证** - 检查标题是否为空、长度是否超限
|
|||
|
|
6. **最小长度检查** - 检查文章字数是否达到阈值
|
|||
|
|
7. **违禁词检查** - 检查标题中是否包含违禁词
|
|||
|
|
8. **AI处理** - 调用Coze或Dify进行文章改写
|
|||
|
|
|
|||
|
|
## 注意事项
|
|||
|
|
|
|||
|
|
1. **Selenium依赖**:需要安装Chrome浏览器和ChromeDriver
|
|||
|
|
2. **网络问题**:如果仍然无法访问网站,可能需要:
|
|||
|
|
- 检查网络连接
|
|||
|
|
- 配置代理设置
|
|||
|
|
- 更换网络环境
|
|||
|
|
3. **Selenium无头模式**:当前使用无头模式,如果需要调试,可以注释掉`--headless`参数
|
|||
|
|
|
|||
|
|
## 测试建议
|
|||
|
|
|
|||
|
|
1. 运行测试脚本:`python test_extract.py`
|
|||
|
|
2. 检查日志文件:`tail -f article_replace.log`
|
|||
|
|
3. 验证提取结果:检查生成的文章文件
|
|||
|
|
|
|||
|
|
## 后续优化建议
|
|||
|
|
|
|||
|
|
1. **错误处理增强**:对网络请求添加重试机制
|
|||
|
|
2. **选择器优化**:根据实际网页结构调整CSS选择器
|
|||
|
|
3. **等待策略优化**:使用更智能的等待策略,而不是固定延时
|
|||
|
|
4. **日志级别管理**:区分调试信息和生产日志
|