使用BeautifulSoup Python解析表

时间:2013-06-27 01:18:58

标签: python beautifulsoup

如果我想读取格式符合表格中的条目:

<table cellspacing="0" cellpadding="4">

stuff

</table>

我正在使用它作为我当前的方法:

pg = urllib2.urlopen(req).read()
page = BeautifulSoup(pg)
table = page.find('table', cellpadding = 4, cellspacing = 0)

我的table无法正确读取标记,最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

我已经使用BeautifulSoup版本3和4对此进行了测试。您的代码适用于BS4,因此您必须使用版本3.

>>> from bs4 import BeautifulSoup as BS4 # Version 4
>>> from BeautifulSoup import BeautifulSoup as BS3 # Version 3
>>> bs3soup = BS3("""<table cellspacing="0" cellpadding="4">
... 
... stuff
... 
... </table>""")
>>> bs4soup = BS4("""<table cellspacing="0" cellpadding="4">
... 
... stuff
... 
... </table>""")
>>> bs3soup.find('table', cellpadding = 4, cellspacing = 0) # None
>>> bs4soup.find('table', cellpadding = 4, cellspacing = 0)
<table cellpadding="4" cellspacing="0">

stuff

</table>

所以,如果你想继续使用BS3,这应该解决它:

>>> soup.find('table', cellpaddin="4", cellspacing="0") # Notice how the integers are now strings, like in the HTML.

但是,您应该使用版本4(from bs4 import BeautifulSoup)。