Files
ArticleReplaceBatch/PROBLEM_SOLUTION.md
2026-03-25 15:17:18 +08:00

3.2 KiB
Raw Permalink Blame History

问题诊断与解决方案

问题描述

程序运行在处理文章的时候,没有运行到process_link函数,所有的好像都跳过了。

问题诊断过程

1. 初步分析

通过运行诊断脚本(debug_process.py),发现:

  • Excel文件读取正常有13个链接
  • 链接过滤逻辑正常
  • 违禁词配置正常
  • 最小文章长度设置为102字符

2. 日志分析

article_replace.log中可以看到:

  • "总共13个链接" 重复多次(说明循环执行多次)
  • "开始处理链接" 确实被调用了
  • 但之后没有任何输出,说明函数提前返回了

3. 深入调查

通过测试发现真正的问题:

问题1Selenium函数被注释

get_web_content.py中,所有的文章提取函数都调用了get_webpage_source_selenium(),但这个函数被注释掉了,导致程序无法获取动态网页内容。

问题2网络请求配置问题

即使切换到requestsget_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. 日志级别管理:区分调试信息和生产日志