遍历指定class的div提取链接时遇NoneType不可迭代错误求助
问题原因与修复方案
错误的根源不是带target-class的div不含链接,而是部分div没有class属性,调用div.get('class')会返回None,此时执行'target-class' in None就会触发TypeError——因为None是不可迭代对象,无法用in操作符判断成员。
修复方法1:先判断class属性存在,再检查目标类
修改判断条件,确保div.get('class')不为None后再进行成员检查:
import requests from bs4 import BeautifulSoup r = requests.get('https://targeturl.com/') soup = BeautifulSoup(r.text, 'html.parser') for div in soup.find_all('div'): # 先确认class属性存在,再检查是否包含目标类 if div.get('class') and 'target-class' in div.get('class'): for link in div.find_all('a'): print(link.get('href'))
修复方法2:直接用BeautifulSoup的class筛选功能
更简洁的方式是在find_all中直接指定class_参数,BeautifulSoup会自动筛选带有目标类的div,无需手动处理class属性:
import requests from bs4 import BeautifulSoup r = requests.get('https://targeturl.com/') soup = BeautifulSoup(r.text, 'html.parser') # 直接筛选带有target-class的div for div in soup.find_all('div', class_='target-class'): for link in div.find_all('a'): print(link.get('href'))
内容的提问来源于stack exchange,提问作者reallymemorable
相关产品推荐
相关产品推荐

