Selenium Python检测网站死链如何过滤javascript:void(0)仅请求https链接
Selenium Python 死链检测问题修复方案
修改后完整代码
import requests from selenium import webdriver # 此处省略driver初始化代码 anchor = driver.find_elements_by_tag_name("a") for anchors in anchor: href = anchors.get_attribute('href') # 前置过滤:排除无效链接、仅保留https开头的链接 if not href or href == "javascript:void(0)" or not href.startswith("https://"): continue try: # 增加超时设置,避免请求长时间卡住 resp = requests.head(href, timeout=5) # 2xx/3xx状态码视为有效链接,4xx/5xx视为死链 if resp.status_code < 400: print(href, "Valid link") else: print(href, "Broken link") except Exception as e: # 捕获请求异常(超时、连接失败等)直接判定为无效链接 print(href, "Broken link, error:", str(e))
核心修改说明
- 新增前置过滤逻辑:先提取href属性,直接跳过空值、
javascript:void(0)、非https开头的链接,避免无效请求触发报错 - 补充异常捕获机制:处理请求过程中可能出现的超时、DNS解析失败、连接被拒绝等异常情况,避免脚本直接中断
- 修正状态码判断逻辑:原代码只要能返回状态码就判定为有效,修改为仅状态码小于400(即正常响应/合法重定向)才判定为有效链接,符合死链检测的实际需求
内容的提问来源于stack exchange,提问作者Priyanka Tester
相关产品推荐
相关产品推荐

