Beautiful Soup中.attrs方法失效求助:新手复刻教程代码遇问题
问题分析与解决:Hangman游戏数据爬取中BeautifulSoup的attrs报错问题
你的代码有两个关键问题导致无法运行:
- 语法错误:
result =和requests.get(...)被拆分成了两行,这会直接触发Python语法错误,必须合并为一行。 - 空值访问错误:不是所有
<th>标签内部都包含<a>标签,当i.find('a')找不到对应元素时,a_tag会是None,此时直接调用a_tag.attrs['title']会抛出AttributeError。
修正后的代码
import requests from bs4 import BeautifulSoup result = requests.get('https://en.wikipedia.org/wiki/List_of_highest-grossing_films') src = result.content soup = BeautifulSoup(src, 'lxml') results = [] for i in soup.find_all('th'): a_tag = i.find('a') # 先确认找到<a>标签,再尝试获取title属性 if a_tag: # 使用get方法获取属性,避免标签无title属性时报错 film_title = a_tag.attrs.get('title') if film_title: results.append(film_title) print(results)
关键修正点说明
- 修复了
result =的语法错误,将请求语句合并为一行; - 增加
if a_tag:判断,跳过没有<a>标签的<th>元素; - 使用
attrs.get('title')替代直接索引attrs['title'],即使<a>标签没有title属性也不会报错,只会返回None,再通过二次判断过滤掉空值。
内容的提问来源于stack exchange,提问作者Andrew Wei
相关产品推荐
相关产品推荐

