在Beautiful Soup库中,find_all
用于搜索当前标签的所有子节点,并返回所有符合条件的子节点的列表。find_all
方法可以接收多种类型的参数,如标签名、属性、文本内容等,来定位HTML文档中的元素。
举个栗子,用find_all
遍历HTML表格的行和列,提取表格数据并保存到dataframe:
table_data = []
for row in first_table.find_all('tr'):
cells = row.find_all(['td', 'th']) # 同时考虑<td>和<th>标签
if cells:
# 提取并清理单元格文本
cleaned_cells = [cell.get_text(strip=True) for cell in cells]
table_data.append(cleaned_cells)
df = pd.DataFrame(table_data[1:], columns=table_data[0]) # 假设第一行是列名
这里find_all
方法被调用了两次:
- 第一次是在
first_table
对象上调用,用于找到表格中所有的行(<tr>
标签)。 - 第二次是在每一行(
row
对象)上调用,用于找到该行中所有的单元格,即<td>
或<th>
标签。这里传递了一个列表['td', 'th']
作为参数,告诉find_all
方法要查找这两种类型的标签。