1

如果我想读取遵循以下格式的表中的条目:

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

stuff

</table>

我用这个作为我目前的方法:

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

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

4

1 回答 1

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)。

于 2013-06-27T01:21:25.000 回答