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

Python爬虫报错求助:SyntaxError与NoneType不可迭代问题

错误原因分析及解决方法

一、原代码的语法错误原因

  • 变量命名非法:for h-full aspect-h-16 aspect-w-16 ng-tns-c75-1 in resultado: 中,你用了带空格、连字符的字符串作为循环变量名。Python变量名只能包含字母、数字、下划线,且不能以数字开头,连字符会被解析为减法运算符,空格会被当成多个变量的分隔,直接触发SyntaxError。

二、修改后TypeError的原因

  • soup.find('div', class_='xxx') 只会返回第一个匹配的div元素,如果没有找到匹配元素则返回None。你直接对resultado做循环,当find返回None时,就会触发'NoneType' object is not iterable错误;即使找到元素,单个Tag对象也不是可迭代的(除非你是遍历它的子节点,但这不是你的需求)。

三、完整解决代码

import requests
from bs4 import BeautifulSoup

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 13_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}

# 发起请求,主动抛出请求错误便于排查
r = requests.get('https://exchange.art/gson/nfts?sort=listed-oldest')
r.raise_for_status()

soup = BeautifulSoup(r.content, 'html.parser')

# 用find_all获取所有匹配class的div,而非单个元素
resultados = soup.find_all('div', class_='h-full aspect-h-16 aspect-w-16 ng-tns-c75-1')
nftlink = []

# 循环每个匹配的div元素
for div in resultados:
    # 提取当前div下的所有有效a标签链接
    for link in div.find_all('a', href=True):
        href = link['href']
        print(href)
        nftlink.append(href)

四、额外注意事项

  • 目标网站采用Angular框架(从class中的ng-tns标识可判断),可能存在动态渲染逻辑,静态requests请求可能无法获取到实际渲染后的NFT列表内容。如果上述代码仍无法拿到数据,需要改用Selenium、Playwright等工具模拟浏览器加载页面后再提取内容。
  • 注意网站反爬机制,避免频繁发起请求导致IP被封禁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:40:31