2016-09-13 13 views
0

美しいスープを使用して3つの属性を持つすべてのリンクを見つけるにはどうすればよいですか?美しいスープ。 3つの属性を持つすべてのリンクを見つける方法

私はすべての属性を含むすべてのリンクを見つけるしたいと思います:

a id="js_24" class="_27jf _3emk" data-hover="tooltip" 

私は、このような方法を試してみました:

emo = soup.find_all('a', {'id': 'fjs_24', 'class': '_27jf _3emk', 'data-hover':"tooltip"}) 

しかし、誰成功事例の。私は結果が得られません。

全リンクはそうなります

<a id="js_24" class="_27jf _3emk" data-hover="tooltip" aria-label="6 Wow" href="/ufi/reaction/profile/browser/?ft_ent_identifier=909182312524600&av=100011414120311" rel="ignore" role="button" tabindex="-1"> 
+0

は、IDは一意ではありませんか? –

+0

いいえ、あまり簡単ではありません;) –

答えて

1

あなたのロジックと間違って何もありませんが、問題はIDある実際のidがjs_24あるときにfjs_24を持っている、間違っている:

emo = soup.find_all('a', {'id': 'js_24', 'class': '_27jf _3emk', 'data-hover':"tooltip"}) 

あなたが変更を加えたら、それが動作するのを見ることができます:

In [10]: from bs4 import BeautifulSoup 


In [11]: soup = BeautifulSoup("""<a id="js_24" class="_27jf _3emk" data-hover="tooltip" aria-label="6 Wow" href="/ufi/reaction/profile/browser/?ft_ent_identifier=909182312524600&av=100011414120311" rel="ignore" role="button" tabindex="-1"></a>""","lxml") 


In [12]: soup.find_all('a', {'id': 'fjs_24', 'class': '_27jf _3emk', 'data-hover':"tooltip"}) 
Out[12]: [] 

In [13]: soup.find_all('a', {'id': 'js_24', 'class': '_27jf _3emk', 'data-hover':"tooltip"}) 
Out[13]: [<a aria-label="6 Wow" class="_27jf _3emk" data-hover="tooltip" href="/ufi/reaction/profile/browser/?ft_ent_identifier=909182312524600&amp;av=100011414120311" id="js_24" rel="ignore" role="button" tabindex="-1"></a>] 

あなたがlxmlのがインストールされている場合、あなたはCSSセレクタを使用して多くのより速く、より簡潔にそれを行うことができます。

from lxml import html 

tree = html.fromstring(""""<a id="js_24" class="_27jf _3emk" data-hover="tooltip" aria-label="6 Wow" href="/ufi/reaction/profile/browser/?ft_ent_identifier=909182312524600&av=100011414120311" rel="ignore" role="button" tabindex="-1"></a>""") 

print(tree.cssselect("#js_24[class='_27jf _3emk'][data-hover='tooltip']")) 
+0

ありがとう:)しかし、それを印刷するには? emo emの場合: print em.textが機能しません –

+0

@AnnaK、find_allの代わりにfindを使用すると、find_allは複数の一致を検索し、リスト/ ResultSetを返します。 –

+0

複数の場合、 '' a emo in a emo '' –

関連する問題