授業で作ったWebアプリケーション②

こんにちは、今回は前回の続きとして、私が作ったWebアプリケーションの簡単な解説を続けようと思います。

前回からの続きになるので、まだ見ていない方は下のリンクから見てみてください!↓↓

前回までは、GooglebooksAPIについて初学者ながら解説を行いました今回はAPIを使う上で必然的に出てしまうエラーに対処する方法について考えてみたいと思います。

まず、今回作りたいプログラムのおさらいをしたいと思います。

今回作りたいアプリケーションの条件

言語:python3.8.8

やりたいこと:GoogleBooksAPIを活用して、検索ツールの作成

ほしい検索結果:本の題名・本の著者・発売日・ページ数・紹介文・購入まで飛ぶことができるURL・検索結果の本の画像

前回は、GoogleBooksAPIの使い方について扱いました。今回は、APIを経由して検索をかけた際に、エラーが出てしまうときがあるのでそれの対処について扱いたいと思います。

考えられるエラー

検索をかけた時、GoogleBooksにない書籍を検索をかけた場合、KeyErrorと出てきます。これをそのままにしておくのは利用者の立場からすると、使いにくいと思われます。

それに対処するために、try~exceptを使いたいと思います。(Python公式の解説はこちら

この関数はわかりやすくすると、「エラーが起きた時にする動作を決める」ことができます。

使い方は、「tryの中に、errorが起きなかった時の動作」「exceptの中に、errorが起きた時の動作」を書くだけです。難しい定義も必要ないので、簡単に実装することができます。

for i in range(0,1) :
   url = 'https://www.googleapis.com/books/v1/volumes?q='+tool+want  #GooglBooksAPI
   response = requests.get(url).json() #情報の取得,json変換
   totalitems = response['totalItems'] #件数1
   try :
       items_list = response['items'] #items リストデータ
       items = items_list[i] #items
       info = items['volumeInfo']
       print(response)
       title = info['title']
       pagelink = info['canonicalVolumeLink']
       description = info['description']
       print('紹介文が見当たりません')
       print('タイトル:', title)
       print('URL',pagelink)
       print('~~~~~~~~~~紹介文~~~~~~~~~~~~~')
       print(description)
       print('')
       print('')
       pic=info['imageLinks']['thumbnail']
       print(pic)
   except KeyError:
       print('検索結果がみつかりませんでした')
       print('もう一度試してください')
       sys.exit()
       pass

こんな感じで、検索結果が見つからない場合には「KryError」が出た場合の動作を決めることができました。

これでほとんどの難しい箇所が終わったと思います。

では次のWebアプリケーション③に続きます

ありがとうございました。

授業で作ったwebアプリケーション①

こんにちは、今回は授業で作ったWebアプリケーションの紹介・解説を行いたいと思います。

言語:python3.8.8

やりたいこと:GoogleBooksAPIを活用して、検索ツールの作成

ほしい検索結果:本の題名・本の著者・発売日・ページ数・紹介文・購入まで飛ぶことができるURL・検索結果の本の画像

GoogleBooksAPIについて

このAPIをつかうことで、GoogleBooksに検索を行い、レスポンスとして、リスト形式のレスポンスが返答される。もともとはJavaScriptで使われるAPIであるためpythonで使うときにはひと工夫が必要となる。

url = 'https://www.googleapis.com/books/v1/volumes?q='+tool+want  #GooglBooksAP
response = requests.get(url).json() #情報の取得,json変換

この2行でGoogleBooksにアクセスして、解答を得ることができます。そして、responseにリストとして、入っています。jsonというのは、GoogleBooksAPI自体がJavaScriptで使用することを前提に作られているので、それをpythonで使えるようにするためにjson変換を行い使えるようにしています。

toolの中には代表的なものですが、以下のような検索方法があります

intittleタイトル
inauthor著者
isbnISBN(10桁または13桁両方とも可能)
記入なしフリーワードで調べることが可能
toolの中身

ほかにもありますが、このくらいが代表的であると思います。wantの中身は検索したい方法に基づいたキーワードを入力すると検索できます。responseで返ってくるリストはとても複雑そうに見えますが、簡単にすると「リスト・辞書」の連続になります。

私はプログラミング初学者であり、まだまだ未熟ものですが、コードを書いてみたので、参考になるかわかりませんが、もしよかったら参考にしてください。

url = 'https://www.googleapis.com/books/v1/volumes?q='+str(tool)+str(want)  #GooglBooksAPI
response = requests.get(url).json() #情報の取得,json変換
totalitems = response['totalItems'] #件数1
print('検索結果は',str(totalitems),'件です')
for i in range(0,5) :
    items_list = response['items'] #items リストデータ
    items = items_list[i] #items
    info = items['volumeInfo']
    title = info['title']
    pagelink = info['canonicalVolumeLink']
    description = info['description']
    pagecount=info['pageCount']
    authors=info['authors'][0]
    publishdate=info['publishedDate']
    pic=info['imageLinks']['thumbnail']

詳しいことは、Googleから公式に詳細が記載されているので、下のリンクからご覧ください。

https://developers.google.com/books/docs/v1/using

次回に続きます。