使用Python和BeautifulSoup解析表

时间:2011-06-21 03:21:56

标签: python html parsing beautifulsoup

我正在尝试使用Python和BeautifulSoup访问某些td标记中的内容。我可以得到满足标准的第一个td标签(带有查找),或者所有这些标签(带有findAll)。

现在,我可以使用findAll,全部获取它们,并从中获取我想要的内容,但这似乎效率低下(即使我对搜索设置了限制)。反正是否有符合我想要的标准的某个标签?说第三个,还是第十个?

到目前为止,这是我的代码:

from __future__ import division
from __future__ import unicode_literals
from __future__ import print_function
from mechanize import Browser
from BeautifulSoup import BeautifulSoup

br = Browser()
url = "http://finance.yahoo.com/q/ks?s=goog+Key+Statistics"
page = br.open(url)
html = page.read()
soup = BeautifulSoup(html)
td = soup.findAll("td", {'class': 'yfnc_tablehead1'})

for x in range(len(td)):
    var1 = td[x]
    var2 = var1.contents[0]
    print(var2)

2 个答案:

答案 0 :(得分:2)

  

无论如何都要去某个td   标签满足我想要的标准?说   第三个,或第十个?

嗯...

all_tds = [td for td in soup.findAll("td", {'class': 'yfnc_tablehead1'})]

print all_tds[3]

......没有别的办法......

答案 1 :(得分:1)

findfindAll非常灵活,BeautifulSoup.findAll文档说

  

5。您可以传入可调用对象   它以Tag对象为唯一对象   参数,并返回一个布尔值。一切   findAll遇到的标记对象   将被传递到这个对象,和   如果调用返回True然后是标记   被认为是匹配。