我试图提取表头中元素的索引,以便我可以使用结果在表的正文中选择适当的列。这些列的数量不尽相同,但我需要的列在标题方面保持不变。
所以我想知道,例如,第三个'表格的标题中是索引[2],因此
这是我的尝试:
#TRIAL TO GET INDEXES FROM TABLE HEADERS
from bs4 import BeautifulSoup
html = '<table><thead><tr class="myClass"><th>A</th>'
'<th>B</th><th>C</th><th>D</th></tr></thead></table>'
soup = BeautifulSoup(html)
table = soup.find('table')
for hRow in table.find_all('th'):
hRow = hRow.index('A')
print hRow
给予:
ValueError:Tag.index:元素不在标记
中
有什么想法吗?
答案 0 :(得分:6)
您可以找到所有标题并使用相应的文本获取标题的位置:
from bs4 import BeautifulSoup
html = """
<table>
<thead>
<tr class="myClass">
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
</tr>
</thead>
</table>
"""
soup = BeautifulSoup(html)
header_row = soup.select('table > thead > tr.myClass')[0]
headers = header_row.find_all('th')
header = header_row.find('th', text='A')
print headers.index(header) # prints 0