如何用Python的BeautifulSoup获取嵌套元素的aria-label属性
解决方案
你可以通过嵌套查找定位到目标元素,再提取aria-label属性值。具体是在每个views-row的div里,先找到H3标签,再定位H3内的div元素,最后获取该div的aria-label属性。
修改后的完整代码如下:
import requests from bs4 import BeautifulSoup headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36'} url = "https://artsci.calendar.utoronto.ca/search-courses?page=0" r = requests.get(url, headers=headers) soup = BeautifulSoup(r.text, 'html.parser') courses = soup.find_all('div', {'class': 'views-row'}) course_titles = [] for item in courses: # 嵌套查找目标div target_div = item.find('h3').find('div') # 提取属性值并添加到列表,加入判断避免结构异常报错 if target_div and 'aria-label' in target_div.attrs: course_titles.append(target_div['aria-label']) # 可打印结果验证 print(course_titles)
补充说明
- 加入
if判断是为了避免部分元素结构不符合预期时触发报错,提升代码稳定性。 - 如果H3内的div有专属class,也可以用
item.find('h3').find('div', {'class': '目标类名'})来更精准定位元素。
内容的提问来源于stack exchange,提问作者Ibrahim Bilal
相关产品推荐
相关产品推荐

