著者の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())
あなたが試したことを共有してください。 – eLRuLL
@eLRuLL Sry、編集しました! – Diamonds
あなたはダイヤモンドの言葉に忌避されていますか? – jlaur