2016-09-05 11 views
2

私はPythonでWeb-Scrappingを学んでいます。私はエラー「: 『NoneType』オブジェクトが属性 『見つける』を持っていないはAttributeError」を取得していますインドのイエローページ存在してもテキストを見つけることができません

r = requests.get("http://xyzxyz", headers={'User-Agent' : "Magic Browser"}) 
soup= BeautifulSoup(r.content,"html.parser") 

for link in soup.findAll("div", {"class" : "col-sm-5"}): 
    coLink = link.find("span" , {"class" : "jcn"}) 
    companyName = coLink.find("a").text 

の一つを形成する会社名を取得するためにコードを書きました。私は、オブジェクトが何も見つからない場合、このエラーが発生することを知っています。しかし、私は(coLink)を印刷するとき、それは

<span class="jcn"><a href="http://xyz/Kolkata/Sunrise-International-&lt;near&gt;-B-R-B-Basu-Road-/033P3001041_BZDET?xid=S29sa2F0YSBUYXBlciBSb2xsZXIgQmVhcmluZyBEZWFsZXJz" onclick="_ct('clntnm', 'lspg');" title="Sunrise International in , Kolkata">Sunrise International</a> 
</span> 
<span class="jcn"><a href="http://xyz/Kolkata/Shree-Shakti-Vyapaar-PVT-LTD/033P6001995_BZDET?xid=S29sa2F0YSBUYXBlciBSb2xsZXIgQmVhcmluZyBEZWFsZXJz" onclick="_ct('clntnm', 'lspg');" title="Shree Shakti Vyapaar PVT LTD in , Kolkata">Shree Shakti Vyapaar PVT LTD</a> 
</span> 

すべてのスパンクラス内、以下のリンクを与える場合には、会社のテキストを取得する方法を助けてくださいことはできますか?あなたは場合にエラーを取得しないでしょう。この方法で

for link in soup.select(".col-sm-5 .jcn a"): 
    print(link.get_text()) 

spanがある:あなたが希望a要素にマッチするCSS selectorを使用することができます - 現在の問題を説明するが、代替ソリューションを提供していない

+1

すべての 'span.jcn'タグに' a'タグが含まれていますか? –

+0

単純な例外を追加すると、内部にタグを持たないすべてのspan.jcnを無視することでこの問題を解決できますか? –

+0

いずれの場合でも、 'coLink.find(" a ")'がテキストを取得できるタグを返すか、 'None'を返すかどうか最初にチェックする必要があります。 –

答えて

0

aリンクが内部にありません。

col-sm-5は、要素の配置に使用されるひどいクラス名です。UI /レイアウト固有のため、変更の可能性が高いことに注意してください。

+0

あなたのコードで小さな構文を修正した後:r = requests.get( "http://www.justdial.com/Kolkata/Taper-Roller-Bearing-Dealers"、headers = {'User-Agent': "Magic Browser "}) soup.select({"。col-sm-5 .jcn a "})のリンク のスープ= BeautifulSoup(r.content、" html.parser "): \t print(link.get_text ))\t "set 'オブジェクトには属性' read 'がありません。 –

+0

@BhaveshGhodasaraええ、タイポを修正しました。しかし、このエラーは表示されたコードに関連付けることができませんでした。 – alecxe

+0

soup.select({"。col-sm-5 .jcn a"})内のリンクについては、 のファイル "g:\ pyt \ justdial.py" 15行目のトレースバック(最新の最後の呼び出し): ファイル「C:¥Users¥user¥AppData¥Local¥Programs¥Python¥Python35¥lib¥site-packages¥bs4¥element.py」、1349行目、選択中 トークン= shlex.split(セレクタ) ファイル " C:¥Users¥user¥AppData¥Local¥Programs¥Program Files¥Python¥lib¥shlex.py "、273行目、splitで リターンリスト(lex) ファイル" C:\ Users \ user \ AppData \ Local \ Programs Python \ Python35 \ lib \ shlexにある\ Python \ Python35 \ lib \ shlex.py "行263を__next__ トークン= self.get_token()ファイル –

関連する問題