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

抓取HTML网页时如何去除所获链接的全部重复项 附代码语法错误修正

代码修正方案

原代码核心错误点

  • 语法错误:startswith是字符串的内置方法,必须用字符串.startswith(匹配内容)的格式调用,且需要先提取到href属性的字符串值再调用该方法
  • 取值错误:links.get没有传入要获取的属性名href,links('href')也不是合法的属性取值写法
  • 逻辑错误:不能用startswith('None')判断空属性,href为空时是None类型,不是字符串'None',直接调用字符串方法会直接报错
  • 逻辑冗余:http和https的判断可以合并,不需要分开写两次

修正后的可用代码

假设你的代码是在遍历所有抓取到的<a>标签的循环中,修正后完整逻辑如下:

uniquelinks = set()
# 这里的links_list是你之前抓取到的所有a标签对象组成的列表
for link in links_list:
    # 先提取href属性值,不存在则为None
    href = link.get('href')
    # 跳过空链接、相对路径链接、页内锚点链接
    if not href or href.startswith('/') or href.startswith('#'):
        continue
    # 仅保留http/https开头的外部链接
    if href.startswith(('http', 'https')):
        print(href)
        uniquelinks.add(href)

优化说明

  • 提前提取href变量,减少重复调用get方法的开销
  • 合并判断条件,简化代码逻辑
  • 先做空值判断,避免空值调用字符串方法抛出异常

内容的提问来源于stack exchange,提问作者amilce

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:06:00