2016-07-18 7 views
1

インターネットから財務データを抜き取り、表の表として表示するコードを記述しようとしています。私が抱えている問題は、AttributeError: 'ResultSet'オブジェクトに 'findAll'属性がないというエラーを返すことです。 なぜこれを返すのか分かりませんが、エラーを取り除くために多くのことを試みましたがそれだけで戻ってくる。私は、ここでいくつかの状況を明らかにすることができると期待していた。私のコードは次のとおりです。AttributeError: 'Resultset'オブジェクトに属性がありません 'findAll

import urllib2 

    from bs4 import BeautifulSoup 

    Goog_page = 'https://uk.finance.yahoo.com/q/hp?s=GOOG' 

    page = urllib2.urlopen(Goog_page) 

    html = page.read() 

    soup = BeautifulSoup(html, "lxml") 

    soup.prettify().encode('UTF-8') 

    #print soup.findAll('table') 

    right_table = soup.find_all('table', {'class':'yfnc_datamodoutline1'}) 




    A=[] 
    B=[] 
    C=[] 
    D=[] 
    E=[] 
    F=[] 
    G=[] 
    H=[] 
    I=[] 
    J=[] 

    def parse_string(el): 
     text = ''.join(el.findAll(text=True)) 
     return text.strip() 
    for rows in right_table: 
     rows = map(parse_string, right_table.findAll('tr')) 
     for cell in rows: 
      data = map(parse_string, rows.findAll('td')) 
      if len(data)>1: 
        A.append(data[0].find(text=True)) 
        B.append(data[1].find(text=True)) 
        C.append(data[2].find(text=True)) 
        D.append(data[3].find(text=True)) 
        E.append(data[4].find(text=True)) 
        F.append(data[5].find(text=True)) 
        G.append(data[6].find(text=True)) 
        H.append(data[7].find(text=True)) 
        I.append(data[8].find(text=True)) 
        J.append(data[9].find(text=True)) 

私は戻って取得エラー:ファイルを「...」、37行を、行に= right_table.findAllは( 『TR』)と、エラーメッセージが印刷されます。

私は、Python 2.7とWindowsのヘルプを事前に8.1

感謝を使用しています!あなたのコードのこのセクションでは

+0

可能な重複:「ResultSetの」オブジェクト「には属性を持っていない_all \見つけます'?](http://stackoverflow.com/questions/24108507/beautiful-soup-resultset-object-has-no-attribute-find-all) –

+0

ありがとう、ありがとう。私はそれをチェックします! –

答えて

0

data = map(parse_string, rows.findAll('td')) 
if len(data)>1: 

あなたはどちらかあなたのdataオブジェクトの上に横断したり、一つだけtdの要素を持っている場合、代わりにfindAllrows.find('td')を使用するようにforループを使用する必要があります。あなたは、各<td>のテキストを取得し、あなたはできるリストに追加したい場合は、例えば

は、:[美しいスープの

data = [] 
for row in right_table: 
    tablecells = row.findAll('td') 
    for cell in tablecells: 
     data.append(row.get_text().strip()) 
+0

ええ、それは理にかなっています。おそらく問題は、リストを検索するために2番目のfindAllコマンドを使用しようとしていることだと考えていました...リストのすべての 'td'アイテムを引き出すにはどうしてですか? –

+0

セルをリストに追加するスニペットを追加しました – jinksPadlock

関連する問題