2017-10-24 18 views
0
<a href="link" target="_blank" class="xXx text-user topic-author" sl-processed="1"> 
      diamonds 
     </a> 

私はBeautifulSoupで 'a'タグにある擬似「ダイヤモンド」を抽出したいと思います。Python&BeautifulSoup:タグの値を抽出する方法は他にもたくさんありますか?

私はたくさんのことを試しましたが、いつも「なし」を返します。事のウィッヒが仕事になっていた私にとって

は助けのためにこの

txt = soup.find('a', {'class': 'xXx text-user topic-author'}) 
print (txt) 

おかげでした。

+0

あなたが試したことを共有してください。 – eLRuLL

+0

@eLRuLL Sry、編集しました! – Diamonds

+0

あなたはダイヤモンドの言葉に忌避されていますか? – jlaur

答えて

2

著者のCSSクラスがページ外で同じではないようですので、フィルタリングを行う必要があります。

著者エレメントには複数のCSSクラスがありますが、いくつかの類似点があります。

以下のコードは、著者を印刷します。それは最初に作者がある要素をつかむ。問題は、このCSSクラス(JvCare)が多くのものに使用されていることです。要素の数はページの98を返しますが、著者名は25しかないので、後で少しフィルタリングする必要があります。

import requests 
from bs4 import BeautifulSoup 

url = "http://www.jeuxvideo.com/forums/0-7059-0-1-0-1-0-another-war.htm" 
r = requests.get(url) 
soup = BeautifulSoup(r.text, "html.parser") 
JvCs = soup.find_all('span', attrs={'class': 'JvCare'}) 
for j in JvCs: 
    if 'topic-author' in j['class']: 
     print(j.text.strip()) 

jは[「クラス」] JvCsリスト98個の各要素のために異なるCSS-クラスのリストを返します。著者名が存在するものは、 'topic-author'という名前のcssクラスです。

98個の要素のそれぞれについてj ['class']によって返されたリストに 'topic-author'が含まれているかどうかを確認します。そうなら、著者名を印刷します。

希望すると、これ以上に役立ちます。

編集:関与する2つの以上のCSSセレクタがある状況について(BeautifulSoupのための本当にすごいdocsで述べた)これを行う賢く方法がありますようです 。このような場合は、.select-methodの使用を推奨しています。あなたの場合、それはこうなるでしょう:

author_list = soup.select('span.JvCare.topic-author') 
for author in author_list: 
    print(author.text.strip()) 
+0

ありがとう、それは完全に動作します。私は著者をリストに入れました。私はあなたのポストは、私たちがそれをそう呼ぶことができるなら、他のcss "セレクター"のために私を助けてくれると確信しています。どうもありがとう。 – Diamonds

関連する問題