当表格嵌入列表中时,使用bs4捕获列表中的信息

时间:2016-06-03 19:29:03

标签: python list beautifulsoup html-table

对于这个HTML代码:

<ul><li>Include these codes as defined in http://unitsofmeasure.org
    <table><tr><td><b>Code</b>
    </td><td><b>Display</b></td></tr>
    <tr><td>min</td><td>Minute</td><td></td></tr>
    <tr><td>h</td><td>Hour</td><td></td></tr><tr>
    <td>d</td><td>Day</td><td></td></tr>
    </table></li></ul>

我只想要<li>部分中的信息,我的意思是"Include these codes as defined in http://unitsofmeasure.org"。但由于</li>在表后结束,BS4也会捕获表中的信息。这是我的代码:

definition = [li.get_text() for li in ul.findAll("li")]

这是输出:

[u'Include these codes as defined in http://unitsofmeasure.orgCodeDisplayminMinutehHourdDaywkWeekmoMonthaYear']

如何编辑代码以捕获表中的信息?

2 个答案:

答案 0 :(得分:1)

您可以使用extract()删除该表。

definition = [li.find('table').extract().get_text() for li in ul.findAll("li")]

答案 1 :(得分:0)

尝试使用 previousSibling 标记向上移动,有关https://www.crummy.com/software/BeautifulSoup/bs4/doc/#method-names的可用方法的更多信息

t = soup.find('table')
print t.previousSibling