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)
修正说明
- 更换变量名避免模块覆盖,保证正则功能可用
- 先获取页面文本,用
any()高效检查关键词存在性 - 添加手机号正则匹配逻辑,覆盖需求中的过滤规则
- 优化异常捕获,打印错误信息方便定位问题
- 调整逻辑完全对齐需求:检测到禁用内容则跳过发送,否则执行发送流程
内容的提问来源于stack exchange,提问作者B.12
相关产品推荐
相关产品推荐

