过滤掉包含colspan的数据时如何提取某些数据?

时间:2016-09-29 14:06:52

标签: python web-scraping beautifulsoup

例如:

<tbody>
<tr><td colspan="2"><p>Unwanted Text 1</p>
</td>
</tr>
<tr><td><a href="http://www.example.com">Text 1</a></td>
<td>Nonesense 1</td>
</tr>
<tr><td><a href="http://www.example2.com">Text 2</a></td>
<td>Nonesense2</td>
</tr>
<tr><td colspan="2"><p class="second-title">Unwanted Text 1</p>
</td>
</tr>
</tbody>

我试过了:

soup.select('tr')
for x in g:
    print(x.contents[0].text)

输出:

Unwanted Text 1
Text 1
Text 2
Unwanted Text 2

我怎样才能得到&#34;文字1&#34;和&#34;文字2&#34;而省略其他的。

1 个答案:

答案 0 :(得分:2)

您可以直接匹配a元素:

for item in soup.select('tr > td > a'):
    print(item.get_text())

或者,如果您特别想要跳过包含td属性的colspan元素的行:

for item in soup.select('tr'):
    if item.find("td", colspan=True):
        continue
    print(item.td.get_text())  # get text of the first cell in the row