3.2 KiB
3.2 KiB
问题诊断与解决方案
问题描述
程序运行在处理文章的时候,没有运行到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()中添加了代理配置,避免系统代理的干扰。
修复后的流程
- Excel读取 - 正常
- 链接过滤 - 正常
- 网页内容提取 - 使用Selenium获取动态内容
- 标题和内容提取 - 使用多个CSS选择器尝试
- 内容验证 - 检查标题是否为空、长度是否超限
- 最小长度检查 - 检查文章字数是否达到阈值
- 违禁词检查 - 检查标题中是否包含违禁词
- AI处理 - 调用Coze或Dify进行文章改写
注意事项
- Selenium依赖:需要安装Chrome浏览器和ChromeDriver
- 网络问题:如果仍然无法访问网站,可能需要:
- 检查网络连接
- 配置代理设置
- 更换网络环境
- Selenium无头模式:当前使用无头模式,如果需要调试,可以注释掉
--headless参数
测试建议
- 运行测试脚本:
python test_extract.py - 检查日志文件:
tail -f article_replace.log - 验证提取结果:检查生成的文章文件
后续优化建议
- 错误处理增强:对网络请求添加重试机制
- 选择器优化:根据实际网页结构调整CSS选择器
- 等待策略优化:使用更智能的等待策略,而不是固定延时
- 日志级别管理:区分调试信息和生产日志