2017-10-01 4 views
0

学校プロジェクトに問題があります。私はbeautifulSoupでスクレーパープログラムを作成して、驚きになり、ランダムに5つの引用符を印刷します。 ...まあ、私は論理的にサイトからデータを掻き集めて引用符を拾いましたが、5つは返しませんでしたが、それらのすべてが.....カウンターで試しましたが運がありません私を助けてください?Python:ランダムに5つのスクラップを印刷する

import urllib 
from BeautifulSoup import BeautifulSoup 


topic_url = 'http://quotes.yourdictionary.com/theme/marriage/' 
topic_html = urllib.urlopen(topic_url).read() 
topic_soup = BeautifulSoup(topic_html) 


quotes = topic_soup.findAll('p', attrs={'class': 'quoteContent'}) 


for quote in quotes: 

    print quote.text + ("\n") 

答えて

1

あなたはすでにquotes変数に格納されているすべての見積もりを持っています。あなたはrandomモジュールとそのコレクションから5個のランダムなものを選択することができます。

import random 

five_quotes = random.sample(set(quotes), 5) 
for quote in five_quotes: 
    print(quote.text + "\n") 
+0

以下のように5に制限パラメータを設定することができます完璧な作品! –

+0

私はあなたが重複する項目を取得しないことを願っています。 – swatchai

+1

@swatchai私は自分の答えを更新し、 'quotes'を重複を削除するセットに変換しました。 'random.sample()'はすでにインデクスだけでユニークな要素を返していますので、これが唯一必要な変更です。それを指摘してくれてありがとう。 –

0

あなたは素晴らしいソリューション

quotes = topic_soup.findAll('p', limit=5, attrs={'class': 'quoteContent'}) 
関連する問題