前提・実現したいこと
プログラミング初心者です。Python3でAPIを使い、国会会議録から該当キーワードの検索結果を年度ごとに取得し、ファイルに書き込みたいと考えています。このAPIは一度に取得できる検索結果の件数が100件と決まっているため、繰り返し処理を書きました。しかしエラーは出ないものの、上限設定を超えた結果は得られていません。
発生している問題・エラーメッセージ
エラーメッセージは出ず、取得した検索結果はファイルに書き込まれますが、確認すると取得できている検索結果はデフォルト上限設定の100件のみに留まっています。
該当のソースコード
Python3
1import requests 2from bs4 import BeautifulSoup 3 4#検索結果の総件数を取得する関数 5#総件数は<numberofrecords>の要素として返ってくる 6def all_api(year): 7 with open('../thesis/sr'+ str(year) +'.txt', 'r', encoding="utf-8-sig") as fr: 8 soup = BeautifulSoup(fr, 'lxml') 9 nor = int(soup.find("numberofrecords").string) 10 fr.close 11 return(nor) 12 13#検索結果をファイルに書き込む 14for i in range(1990, 1992+1): 15 url = 'http://kokkai.ndl.go.jp/api/1.0/speech?maximumRecords%3D100%26any%3D責任%26from%3D' + str(i) +'-01-01%26until%3D' + str(i) + '-12-31' 16 req = requests.get(url) 17 fw = open('../thesis/sr'+ str(i) +'.txt', 'w', encoding="utf-8") 18 fw.write(req.text) 19 res_num = all_api(i) 20 fw.close 21 22count = 1 #検索結果の開始位置「startRecord」を指定するためのカウンタ 23 24#検索結果が100件を超える場合、urlで取得した検索結果を該当ファイルに追記する 25for i in range(1990, 1992+1): 26 while res_num > 0: 27 with open('../thesis/sr'+ str(i) +'.txt', 'a', encoding="utf-8-sig") as fa: 28 url = 'http://kokkai.ndl.go.jp/api/1.0/speech?startRecord%3D' + str(count) + '%26maximumRecords%3D100%26any%3D責任%26from%3D' + str(i) + '-01-01%26until%3D' + str(i) + '-12-31' 29 req = requests.get(url) 30 fa.write(req.text) 31 res_num = res_num - 100 32 count += 1
試したこと
国会会議録APIの仕様を確認し、<numberofrecords>以外の返戻タグを使って同じ処理を書こうとしました。しかし、うまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
国会会議録APIの仕様は以下のとおりです。
・国会会議録検索システム -国会会議録検索システム検索用APIについて-
http://kokkai.ndl.go.jp/api.html
※teratailの使い方にも慣れていないため、何かおかしなことをしていたら、お手数ですがご指摘ください。至らぬ点は改めていきます。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/19 22:13