Yahoo!知恵袋の閲覧数ランキングベスト20の質問を取得して'令和'が何個含まれるか調べる
今日、新しい元号'令和'が発表されました。ネットでもこの話題で持ちきりです。ここではYahoo!知恵袋の閲覧数ランキングベスト20のページをスクレイピングして、そこに載っている20個の質問文の中に、'令和'がいくつ含まれているかを数えます。
使った関数
- requests.get : Responseオブジェクトの取得
環境
- windows10 home
- Anaconda 3/ jupyter notebook 5.6.0
- Python 3.7.0
準備
あらかじめ抽出したい要素がwebページでどのように書かれているかを把握します。pythonのコードでコメントアウトしているprint(soup)を有効にすると下のようにhtmlが表示されます。質問文は td class="cell3" の後に書かれているので、このclass="cell3"を指定することで、質問文のみを抽出します。
<td> <em class="icon-r1" title="1位">1位</em> </td> <td><em class="icon-same" title="→">→</em></td> <td class="cell3"> <a href="https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13205747608">>名前が令和と言います<wbr/>。これからどう生きて<wbr/>いけばいいですか。 </a> </td> <td>3,753</td>
コード
from bs4 import BeautifulSoup as bs #BeautifulSoupのインポート import requests #requestsのインポート url = "https://chiebukuro.yahoo.co.jp/ranking/ranking.php" #urlの指定 rs = requests.get(url) #Responseオブジェクトの取得 soup = bs(rs.text, 'html.parser') #BeautifulSoupオブジェクトの取得 #print(soup) #soupの表示 selected_class = soup.select(".cell3") #オブジェクトからclass".cell3"のみ選択 counter_sum=0 #カウンターの初期化 for i in selected_class: #selected_classリストの要素数forを実行 counter_sum=counter_sum+str(i).count('令和') #要素中の'令和'をカウントしカウンターに加える print(i.text,'■■') #要素のテキストを表示 print(counter_sum) #カウンターを表示
実行結果
Yahoo!知恵袋の閲覧数ランキングベスト20の質問内容が表示され、質問に含まれる'令和'の数 10 が表示されます。
質問内容 ■■
名前が令和と言います。これからどう生きていけばいいですか。
■■グラブルのナゾブルの3封目の答えおしえてください
■■新年号 令和アルファベットはL?R?
・
・
・■■
10