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

网页爬取时无法获取锚标签href,出现AttributeError求助

解决爬取商品分类链接时的AttributeError问题

问题详情

我尝试爬取电商页面的商品分类链接,已经成功获取到目标div元素,但提取锚标签的href属性时触发了AttributeError,错误信息如下:

AttributeError Traceback (most recent call last)
Cell In[52], line 3
1 productlinks = []
2 for product in productlist:
----> 3 link = product.find("a",{"class":"category swimlane-item"}).get('href')
4 productlinks.append(baseurl + link)

AttributeError: 'NoneType' object has no attribute 'get'

使用的代码如下:

%pip install beautifulsoup4 
%pip install requests
%pip install pandas
import requests
from bs4 import BeautifulSoup
import pandas as pd
baseurl = "https://www.goflink.com/de-DE/shop/"
# baseurl = "https://www.thewhiskyexchange.com"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'}
k = requests.get('https://www.goflink.com/de-DE/shop/').text
soup=BeautifulSoup(k,'html.parser')
productlist = soup.find_all("div",{"class":"swimlane"})
print(productlist)
productlinks = []
for product in productlist:
    link = product.find("a",{"class":"category swimlane-item"}).get('href')              
    productlinks.append(baseurl + link)

问题原因与修复方案

核心问题

报错的直接原因是product.find("a",{"class":"category swimlane-item"})返回了None——也就是说,部分带有swimlane类的div里,并没有符合条件的a标签,直接调用.get('href')自然会报错。

具体修复步骤

  1. 验证元素匹配准确性
    先打印每个swimlane div的完整内容,确认里面的a标签class是否和你写的一致,避免页面结构变化或拼写错误:

    for product in productlist:
        print(product.prettify())  # 输出div的完整HTML结构,检查a标签的class
    
  2. 添加空值判断,避免报错
    在提取href前先判断是否找到a标签,只有存在时才继续处理:

    productlinks = []
    for product in productlist:
        a_tag = product.find("a",{"class":"category swimlane-item"})
        if a_tag:  # 确认找到a标签再提取属性
            link = a_tag.get('href')              
            productlinks.append(baseurl + link)
    
  3. 优化请求头(可选)
    部分网站会根据请求头返回不同内容,更新你的User-Agent到最新版本,或者添加语言头,确保拿到正确的页面内容:

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
        'Accept-Language': 'de-DE,de;q=0.9'
    }
    k = requests.get('https://www.goflink.com/de-DE/shop/', headers=headers).text
    
  4. 用CSS选择器简化查找(可选)
    使用CSS选择器写法更直观,也能避免class匹配的细节问题:

    productlinks = []
    for product in productlist:
        a_tag = product.select_one('a.category.swimlane-item')
        if a_tag:
            link = a_tag.get('href')
            productlinks.append(baseurl + link)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:45:36