使用Python和BeautifulSoup解析表格
我正在用Python和BeautifulSoup来访问某些
现在,我可以直接用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 个回答
2
有没有办法直接找到一个特定的
标签,比如说第三个或者第十个? 嗯……
all_tds = [td for td in soup.findAll("td", {'class': 'yfnc_tablehead1'})] print all_tds[3]
…其实没有其他办法……
1
find
和findAll
是非常灵活的,BeautifulSoup.findAll 的文档中提到:5. 你可以传入一个可调用的对象,这个对象只需要一个参数,也就是一个标签(Tag)对象,并且返回一个布尔值(True 或 False)。每一个被
findAll
遇到的标签对象都会被传入这个对象,如果返回的是 True,那么这个标签就被认为是匹配的。撰写回答