2017-07-22 28 views
0

bs4のチュートリアルに従っています。私はget_text()の下の例を 'a'としようとしています。チュートリアルの返品結果問題なしでMcDermott InternationalとMDR。しかし、私はAttributeErrorを取得します: 'NoneType'オブジェクトには属性 'get_text'がありません。助けてください。どうもありがとう!Python - AttributeError: 'NoneType'オブジェクトに 'get_text'属性がありません。

with open('Energy.htm') as f: 
    soup = BeautifulSoup(f,"lxml") 
energylist = soup.find_all('td', {"style" : "text-align:left;"}) 
for stock in energylist: 
    try: 
     stock_name = stock.find('a').get_text() 
    except: 
     stock_name = '' 

#sample of the energylist 
[<td style="text-align:left;"> 
<a href="/finance?q=NYSE:MDR&amp;ei=nblKWaDrOs7AmgH0l7S4Bg">McDermott 
International</a> 
</td>, <td style="text-align:left;"> 
<a href="/finance?q=NYSE:MDR&amp;ei=nblKWaDrOs7AmgH0l7S4Bg">MDR</a> 
</td>, <td style="text-align:left;"> 
<a href="/finance?q=NYSE:EQT&amp;ei=nblKWaDrOs7AmgH0l7S4Bg">EQT</a> 
</td>, <td colspan="8" style="text-align:left;"> 
Companies <b>1 - 20</b> of about <b>476</b> in <b>Energy</b> 
</td>] 
+1

これは、「a」タグが見つからなかったことを意味します。ソースを「エネリスト」にどのように加工したかを示すことができますか? –

+0

ウィレムありがとう、私はこのプロジェクトにGoogle Financeを使用していました。サンプルページは次のとおりです。 https://www.google.com/finance?catid=TRBC%3A50&ei=erHDV6HdFcKgeJXHlrgO 美しいスープでそれを解析した後。私は市場のトップムーバーに自分のデータを絞ろうとしました。元の投稿のコードを編集して、エナジーリストを入手する方法を含めます。もう一度ありがとうございました – David

答えて

0

energylistにはアンカータグが含まれていないタグがいくつかあるようです。

for stock in energylist: 
    try: 
     stock_name = stock.find('a').get_text() 
     ... # more code 
    except AttributeError: 
     pass 
+0

get_textとexceptをtryに入れて空白にします。エラーは消えましたが、私はそこからストックネームを抽出します。 David

+0

@David申し訳ありませんが、何が問題なのか分かりません。データを印刷していますか? –

関連する問題