AttributeError: ‘list’ object has no attribute ‘text’解決法

AttributeError: 'list' object has no attribute 'text'

AttributeErrorとは

AttributeErrorとは属性が間違っている事を知らせてくれているエラーです。

Attribute=属性という意味です。

pythonでselenium等を使用していると、

AttributeError: ‘list’ object has no attribute ‘text’

上記のエラーが発生した経験はありませんでしょうか??

メモ変わりにエラーの発生原因と解決法を書いておきます。

AttributeErrorの内容を理解しよう

AttributeError: ‘list’ object has no attribute ‘text’をざっくり翻訳すると、

リストにはテキストという属性はありませんよ!!と知らせてくれています。

単なるスペルミスで発生している可能性もありますが、テキストを取得しようとしてAttributeErrorが発生した場合、要素はリストで返ってくることを理解していない可能性があります。

AttributeErrorの発生例

実際にAttributeError: ‘list’ object has no attribute ‘text’の発生例を見てみましょう。

yahooのTOPページから検索ボックス下のトップテキストを取得しようとしたが、
AttributeError: ‘list’ object has no attribute ‘text’が返ってくるパターン

import time
from selenium import webdriver

d = webdriver.Chrome(r'C:\Users\user\Desktop\selenium\chromedriver')

d.get('https://www.yahoo.co.jp/')
time.sleep(2)
h = d.find_elements_by_css_selector('#toptxt2 > a').text
print(h)
Traceback (most recent call last):
File “C:\python\kizi2.py”, line 8, in <module>
h = d.find_elements_by_css_selector(‘#toptxt2 > a’).text
AttributeError: ‘list’ object has no attribute ‘text’

エラーが発生しました。

お次は変数hのテキストのみを出力しようとしたが、エラーが発生するパターン

import time
from selenium import webdriver

d = webdriver.Chrome(r'C:\Users\user\Desktop\selenium\chromedriver')

d.get('https://www.yahoo.co.jp/')
time.sleep(2)
h = d.find_elements_by_css_selector('#toptxt2 > a')
print(h.text)
Traceback (most recent call last):
File “C:\python\kizi2.py”, line 9, in <module>
print(h.text)
AttributeError: ‘list’ object has no attribute ‘text’

同じエラーが返ってきました。

AttributeErrorの解決法

2行以上の文章を扱うときは自然とfor文を使い繰り返し出力等を行いますが、この場合のような1行のテキストでも要素がリストで返ってくるのでfor文で出力するか、インデックスを指定して要素を取得する必要があります。

for文を使用して出力

import time
from selenium import webdriver

d = webdriver.Chrome(r'C:\Users\user\Desktop\selenium\chromedriver')

d.get('https://www.yahoo.co.jp/')
time.sleep(2)
h = d.find_elements_by_css_selector('#toptxt2 > a')
for i in h:
    print(i.text)
世界遺産登録「百舌鳥・古市古墳群」周辺の宿を紹介

ループを使用しての反復処理でテキストが出力できました。

インデックスを指定して取得

次にテキストを取得するときにインデックスを指定してテキストを取得してみましょう。

一行だけのテキストにはインデックスは[0]を指定してあげます。

import time
from selenium import webdriver

d = webdriver.Chrome(r'C:\Users\user\Desktop\selenium\chromedriver')

d.get('https://www.yahoo.co.jp/')
time.sleep(2)
h = d.find_elements_by_css_selector('#toptxt2 > a')[0].text
print(h)
世界遺産登録「百舌鳥・古市古墳群」周辺の宿を紹介

インデックスを指定してあげる事で問題なく出力できました。

今回はAttributeError: ‘list’ object has no attribute ‘text’の解決方法を解説しました。

今回の解決法やエラーの発生原因は一例です。

seleniumを使用しているとたびたび見かけるエラーかと思いますので、要素はリストで返ってくるということを再認識するようにしましょう。

 data-src=

プログラミング情報サイト「In-Output」

当サイトではプログラミング言語の情報を発信しています。
HTMLやCSSのマークアップ言語の学習方法や解説、WordPressでのサイト開設方法、python等のプログラミング言語を使用して日頃の作業の効率化等、皆様のお役に立てるサイトを目指しています。

CTR IMG