2017-07-10 12 views
0

アンカータグからテキストだけを抽出しようとしています。私はfind_allがResultSetオブジェクトを返し、それを反復処理する必要があることを理解していますが、動作させることはできません。下のコード:美しいスープ - 'ResultSet'オブジェクトに属性 'text'がありません

for all in soup.find("div", {"id": "info-area"}): 
    Name = all.find_all("a") 
    #print(Name) # Returns everything 
    #print(Name.text) # throws error 
    for the_name in Name: 
     print(Name.text) # throws error 

明らかに、私は何か間違っていますが、それほど確かではありません。問題は、ループの最初である

+0

何をしていますか?なぜ2つのループに同じループ変数を使用していますか? –

+0

これはタイプミスでした。編集を参照してください。 – Maverick

+2

'the_name'変数を使用しない場合、なぜ' Name'を作成するのかと考えてみましょう。 –

答えて

1

にコードを変更:

all_div = soup.find("div", {"id": "info-area"}) #find div with id = info-area 
Name = all_div.find_all("a") # under all_div find all a 
for the_name in Name: #loop through each a 
    print(the_name.text) #print each a text 
0

@Maverick、

「名前は」すべて持っているリスト、「」タグ要素です。

リストに.text属性を使用することはできません。

私の理解するには、以下のコードは

for the_name in Name: 
    print(the_name.text) 

あなたのアプローチが正しい動作するはずです。しかし、上記のループで間違ったのは、リストの各要素について、リスト( "Name")ではなく要素( "the_name")を呼び出したことです。

関連する問題