# 问题诊断与解决方案 ## 问题描述 程序运行在处理文章的时候,没有运行到`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. **日志级别管理**:区分调试信息和生产日志