如何使用Beautiful Soup抓取HTML表格所有行 解决仅输出首行问题
问题根因
你的代码存在两个问题:
- 循环对象为
table标签,当前页面仅存在1个符合id匹配规则的表格,因此外层循环仅执行1次。tr.find_all('td')会把表格内全部12个<td>标签存入同一个列表,你仅取前6个元素输出,自然只能得到第一行数据。 - 循环变量命名为
tr但实际迭代的是table对象,属于命名错误,容易干扰逻辑判断。
修正后代码
# 定位目标表格 target_table = soup.find('table', id='rfq-display-line-items-list') # 遍历表格下所有行标签 for tr in target_table.find_all('tr'): tds = tr.find_all('td') # 跳过无td元素的表头行,需要输出表头可删除该判断 if not tds: continue # 格式化输出,第一列预留10字符宽度实现左对齐 print(f"{tds[0].text:<10} {tds[1].text} {tds[2].text} {tds[3].text} {tds[4].text} {tds[5].text}")
运行上述代码即可输出你预期的对齐后的完整两行表格内容。
内容的提问来源于stack exchange,提问作者Rikky Bhai
相关产品推荐
相关产品推荐

