You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python添加过滤器:广告链接邮件发送过滤代码排查求助

代码错误排查与修正

你的过滤代码不工作且无报错,核心是几个关键错误被宽泛的异常捕获掩盖了,具体问题和修复方案如下:

存在的错误点

  • 变量名冲突:用re作为WebElement对象的变量名,直接覆盖了Python内置的正则模块re,后续处理手机号过滤时必然出错。
  • API误用:Selenium的WebElement对象没有findAll方法,这是BeautifulSoup的专属方法,调用不存在的方法直接触发异常,被except:捕获后跳过逻辑执行。
  • 逻辑完全颠倒:当前代码只要进入try块就判定“不能发邮件”,但实际需求是检测到禁用关键词/手机号才不发,逻辑完全相反。
  • 异常捕获过于宽泛:except:捕获所有异常,把方法不存在、元素找不到等关键错误全部隐藏,导致你无法定位问题根源。
  • 遗漏手机号过滤:需求明确要求过滤含手机号的广告,但代码完全未实现该逻辑。

修正后的代码示例

import re
from selenium.webdriver.common.by import By
import time

# 假设i是当前广告的循环索引,根据实际场景调整
i = 0

try:
    # 更换变量名,避免覆盖正则模块
    page_body = driver.find_element(By.XPATH, "//html/body")
    page_text = page_body.text  # 获取页面全部文本内容

    # 定义禁用关键词列表
    forbidden_words = ["Import", "Tree", "Seven"]
    # 检查是否包含禁用关键词
    has_forbidden_word = any(word in page_text for word in forbidden_words)

    # 匹配手机号(示例为国内手机号正则,可根据需求调整)
    phone_regex = re.compile(r'1[3-9]\d{9}')
    has_phone = bool(phone_regex.search(page_text))

    # 对齐需求逻辑:有禁用内容则不发,否则发送
    if has_forbidden_word or has_phone:
        print(f"\n不能发送邮件,包含禁用内容。索引:{i}")
        # 此处添加不发送邮件的逻辑
    else:
        print(f"\n可以发送邮件。索引:{i}")
        # 此处添加发送邮件的逻辑
except Exception as e:
    # 打印异常信息,便于排查问题
    print(f"处理索引{i}时出错:{str(e)}")
    time.sleep(1)

修正说明

  1. 更换变量名避免模块覆盖,保证正则功能可用
  2. 先获取页面文本,用any()高效检查关键词存在性
  3. 添加手机号正则匹配逻辑,覆盖需求中的过滤规则
  4. 优化异常捕获,打印错误信息方便定位问题
  5. 调整逻辑完全对齐需求:检测到禁用内容则跳过发送,否则执行发送流程

内容的提问来源于stack exchange,提问作者B.12

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 17:25:36