You need to enable JavaScript to run this app. Webscraper新增采集标签后获取href报NoneType下标错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Webscraper新增采集标签后获取href报NoneType下标错误如何解决

错误根因

你遇到的报错是因为采集advokat标签的页面时,部分搜索结果条目不存在class="link-body"的<a>元素。BeautifulSoup的find()方法匹配不到对应元素时会返回None,直接对None执行['href']下标取值就触发了TypeError: 'NoneType' object is not subscriptable。
之前只采集bygg标签没有报错,是因为该分类下所有条目都存在该元素,新增的advokat分类存在缺失该元素的特殊条目。

修复方案

你可以根据需求选择以下两种修复逻辑:

方案1:缺失时填充默认值,保留所有条目

适合允许部分条目的nummer字段留空的场景,仅需修改nummer字段的取值逻辑即可:

# 原代码行 'nummer': item.find('a', {'class': 'link-body'})['href'],
# 修改为以下两行
nummer_elem = item.find('a', {'class': 'link-body'})
'nummer': nummer_elem['href'] if nummer_elem else '',

方案2:跳过核心字段缺失的无效条目

如果你只需要保留nummer字段完整的有效条目,可以在组装数据前加校验,跳过不符合要求的条目,同时也能避免其他字段缺失引发的同类报错:

def getQuestions(tag, page):
    url = f'https://www.merinfo.se/search?d=c&ap=1&emp=0%3A20&rev=0%3A100&who={tag}&bf=1&page={page}'
    r = requests.get(url, headers=headers)
    # 新增请求状态校验,避免请求失败时解析报错
    if r.status_code != 200:
        return
    soup = BeautifulSoup(r.text, 'html.parser')
    questions = soup.find_all('div', {'class': 'box-white p-0 mb-4'})
    for item in questions:
        # 提前提取所有元素做校验
        title_elem = item.find('a', {'class': 'link-primary'})
        nummer_elem = item.find('a', {'class': 'link-body'})
        addr_elem = item.find('address', {'class': 'mt-2 mb-0'})
        reg_elem = item.find('div', {'class': 'col text-center'})
        # 任意核心字段缺失就跳过当前条目
        if not all([title_elem, nummer_elem, addr_elem, reg_elem]):
            continue
        question = {
            'tag': tag,
            'title': title_elem.text.strip(),
            'link': title_elem['href'],
            'nummer': nummer_elem['href'],
            'address': addr_elem.text.strip(),
            'RegÅr': reg_elem.text.strip(),
        }
        questionlist.append(question)
    return
额外优化建议
  • 可在每次请求后添加1-2秒的延迟,避免请求频率过高被站点封禁:导入time模块后,在r = requests.get(url, headers=headers)后添加time.sleep(1)
  • 导出Excel时可以指定index=False,避免生成多余的序号列:df.to_excel('merinfo skrapare för bygg.xlsx', index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 00:54:02