如何用Python BeautifulSoup提取HTML表格指定tr内第三td中a标签的href属性
你可以基于已获取的antwerp_table对象,通过BeautifulSoup的标签筛选和属性提取功能完成需求,完整追加代码如下:
# 存储符合要求的下载链接 download_urls = [] # 遍历表格tbody下的所有tr元素 for tr in antwerp_table.tbody.find_all('tr'): # 筛选class属性为空的tr(BeautifulSoup会将HTML中的class=""解析为['']) if tr.get('class', []) == ['']: # 取第三个td元素,索引从0开始计数所以取下标2 third_td = tr.find_all('td')[2] a_tag = third_td.find('a') # 非空判断避免结构异常的行报错 if a_tag and a_tag.get('href'): download_urls.append(a_tag['href']) # 打印验证提取结果 print(download_urls)
如果偏好更简洁的写法,可以直接用列表推导式实现:
download_urls = [ tr.find_all('td')[2].a['href'] for tr in antwerp_table.tbody.find_all('tr') if tr.get('class', []) == [''] and tr.find_all('td')[2].a ]
补充说明
- 如果你需要同时包含没有声明class属性和
class=""的tr行,可以将筛选条件修改为if not tr.get('class')即可 - 提取href前的非空判断可以跳过部分结构异常的行,避免代码运行报错
内容的提问来源于stack exchange,提问作者Test
相关产品推荐
相关产品推荐

