2017-04-20 14 views
0

私はBeautifulSoupを使ってhtmlを解析し、タイトルを取得しようとしています。BeautifulSoup getタイトル返す 'NoneType'オブジェクトに属性 '__getitem__'がありません

私のコードは次のように:私はから私の「タイトル」を抽出しようとしている適切なアンカータグを返し

callerid = cell_list[0] 
print callerid.find('a') 

を。

<a class="caller_ref" href="/tomasi/cardio/vgh/SPsdeGBHH" 
title="CDS1255S56d">identifier</a> 

ここでは、ファンキーになっています。できるだけ早く私は、タイトルを抽出するために、私のprint文に

callerid = cell_list[0] 
print callerid.find('a')["title"] 

を[「タイトル」]を追加として私はそれが明確にアンカータグのHTMLが含まれているとき、どのように、これは「NoneType」することができ

AttributeError: 'NoneType' object has no attribute 'find'

を取得します最初の例に示されているように、それを解析してタイトルを返すにはどうすればよいですか?

+0

'callerid = cell_list [0]'の後に 'print callerid'を追加して、結果を表示できますか? – kvorobiev

+0

'[" title "]'を追加してもこのエラーは発生していません。 'callerid'が' None'なのでエラーが発生しています。結果が – kindall

+0

@kvorobievはい確か は 'どれもが私はせずに一人でそれを印刷するときのように見ていないことがCALLERIDできる方法@kindall identifier ' –

答えて

0

callerid.find('a')は、callerid.find('a').a['title']である必要があります。
このように見えるかもしれませんが、callerid.find('a')はタグの内容を実際に返しません!

0

試して、

from bs4 import BeautifulSoup 
content = '<a class="caller_ref" href="/tomasi/cardio/vgh/SPsdeGBHH" 
title="CDS1255S56d">identifier</a>' 
soup = BeautifulSoup(content) 
anchor = soup.find_all('a')[0] 
print "title : " + (anchor.get('title')) 
0

(それリターンを...?何のよう実際the documentationではそれほど有益ではありません)私は、私は基本的に複数の行でテーブルを解析した、ミスをキャッチし、すべての行にはprint callerid.find('a')のようにアンカータグが付いていました。

しかし、print callerid.find('a')["title"]の場合、この行は、テーブルiの最初の行が(19456行のうち)タイトルタグを持たない唯一の行であり、それ以降のすべての実行を停止したため、NoneTypeを返します。

ありがとうございました。

関連する問題