这是我需要从中提取数据的HTML表的示例。表是 用<重复tr>,<第>和< TD>
<table class="tablename">
<tr>
<th> Animal </th>
<td> Dog </td>
</tr>
<tr>
<th> Fish </th>
<td> Salmon </td>
</tr>
<tr>
<th> Colour </th>
<td> Red </td>
</tr>
</table>
我的代码是这样的:
soup = bs4.BeautifulSoup(readHtml, 'html.parser')
tableClassResults = soup.find("table", { "class" : "tablename" })
tr = tableClassResults.find('tr')
th = tr.find('th')
print "th = ", th
td = tr.find('td')
print "td = ", td
这对于第一个&lt; tr&gt;,给予th = Animal和td = Dog。我的问题是我想循环遍历所有&lt; TR&GT;并提取&lt; TD&GT;和相应的&lt; TD取代。我发现了一些类似的问题,但我无法弄清楚如何进行findNext和循环部分。
答案 0 :(得分:0)
使用find_all
获取所有匹配的元素。
然后迭代方法的返回值,在th
元素下面迭代td
,tr
:
for tr in tableClassResults.find_all('tr'):
th = tr.find('th')
print "th = ", th
td = tr.find('td')
print "td = ", td
给定HTML的输出:
th = <th> Animal </th>
td = <td> Dog </td>
th = <th> Fish </th>
td = <td> Salmon </td>
th = <th> Colour </th>
td = <td> Red </td>