BeautifulSoup HTML提取表格数据;环

时间:2016-01-20 14:03:49

标签: python html python-2.7 beautifulsoup

这是我需要从中提取数据的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和循环部分。

1 个答案:

答案 0 :(得分:0)

使用find_all获取所有匹配的元素。

然后迭代方法的返回值,在th元素下面迭代tdtr

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>