2011-06-21 12 views
1

を解析するためにPythonとBeautifulSoupを使用します。私は最初のtdタグを基準(findで)、またはそれらすべて(findAllで)に合わせることができます。私はPythonとBeautifulSoupで特定のtdタグ内のコンテンツにアクセスしようとしています。表

今、私はそれらすべてを取得し、findAllのを使用して、私はそれらのうちの欲しいコンテンツを取得、それは(私は検索に制限をつけていても)非効率的であるように、それは思えることができます。私が望む基準を満たす特定のtdタグに行くためにとにかくありますか?第3、第10と言ってもいい?

ここに私のコードは、これまでのところです:

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) 

答えて

1

findfindAllは非常に柔軟性があり、BeautifulSoup.findAllドキュメントは

5を言います。呼び出し可能なオブジェクト を渡すことができます。これは、タグオブジェクトを唯一 とみなします。 rgumentを返し、ブール値を返します。 findAllのは に遭遇したことをすべて タグオブジェクトは、このオブジェクトに渡され、呼び出しがtrueを返した場合 は、タグ は一致すると考えられています。

+0

Hrm、それは私が私がする必要があることをさせるかもしれません。私は仕事の後に今夜テストをします。 –

+0

これは、同じ情報を持つ同じタグであることがわかります。子供をチェックする能力がない限り、おそらく。 –

+0

はい、同じタグですが、trueまたはfalseを返すかどうかを決定する前に子タグをチェックすることができます。 – cerberos

2

は、私が欲しいの基準特定のTD タグ会議に行くためにとにかくありますか?と言ってください 第三、または第十?

うーん...

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

print all_tds[3] 

...他の方法がない。..

+0

ため息、それは私が考えたものだ - 私は私が間違っていた期待していました! findを使う方法さえありませんか?タグの特定のインスタンスを見つける方法があることを望みます。 –

+0

all_tds = TD = soup.findAllにおけるTDのためのTD( "TD"、{ 'クラス': 'yfnc_tablehead1'})] また、その行は動作しません。 –

+0

まあ、固定されている - あなたは誤ってタイプミスを発見し修正することができるはずです...盲目的にコピー&ペーストコードはあなたが実際にやっていることを考えずには良いアイデアではありません –

関連する問題