円周率一万桁に0~9がそれぞれ何個含まれるか調べる
円周率一万桁に0~9がそれぞれ何個含まれるか調べます。 こちらのサイト(円周率.jp >> 円周率の値 1万桁まで)から円周率1万桁をスクレイピングで取得し、.count()メソッドで各数字の出現回数を求めます。
使った関数
- requests.get() : Responseオブジェクトの取得
- .count() : 文字列の出現回数を求める
環境
- windows10 home
- Anaconda 3/ jupyter notebook 5.6.0
- Python 3.7.0
コード
from bs4 import BeautifulSoup as bs # BeautifulSoupのインポート import requests # requestsのインポート url = "http://xn--w6q13e505b.jp/value/decimal.html" # urlの指定 rs = requests.get(url) # Responseオブジェクトの取得 rs.encoding = rs.apparent_encoding # 取得したHTMLに含まれるテキスト情報から、文字コードを推定 soup = bs(rs.text, 'html.parser') # BeautifulSoupオブジェクトの取得 # 一つ目の<pre>の文字列を取得、7文字目以降(小数部分)を抽出 pai_decimal = (soup.select_one('pre').string)[7:] # 0~9までの文字が何回現れるか表示 for i in range(10): num = str(i) print(i,pai_decimal.count(num))
実行結果
0 968
1 1026
2 1021
3 974
4 1012
5 1046
6 1021
7 970
8 948
9 1014