ポートフォリオサイト公開中

【python】Google ColabでDMM APIを扱う

こんにちは、ともろう(@tomorrowSLog)です。

Google ColabでDMM APIを扱ってデータ取得をしてみたのでその知見を備忘録としてまとめます。

目次
  1. コード全文
  2. ロードマップ
  3. まとめ

【pythonコードを読む】AV女優10000人webスクレイピング

コード全文

import pandas as pd
import requests
import json
import time

APIID = ''
ID = 'tomowarkar-990'
counter = 0

data = {"name":[],
        "height":[],     
        "cup":[],             
        "hip":[],       
        "waist":[], 
        "bust":[], 
        "blood_type":[],         
        "birthday":[]}
AV_df = pd.DataFrame(data)

start = time.time()
for keyword in AV:
  
  r = requests.get('https://api.dmm.com/affiliate/v3/ActressSearch?api_id=' + APIID + '&affiliate_id=' + ID + '&keyword=' + keyword + '&output=json').content
  r= json.loads(r)
  try: r = r['result']['actress'][0]
  except: pass
  try: name = r['name']
  except: name = ""
  try: height = r['height']
  except: height = ""
  try: cup = r['cup']
  except: cup = ''
  try: hip = r['hip']
  except: hip =''
  try: waist = r['waist']
  except: waist = ''
  try: bust = r['bust']
  except: bust = ''
  try: blood_type = r['blood_type']
  except: blood_type = ''
  try: birthday = r['birthday']
  except: birthday = ''
  
  se = pd.Series([name, height, cup, hip, waist, bust, blood_type, birthday], ["name", "height", "cup", "hip", "waist", "bust", "blood_type", "birthday"])
  AV_df = AV_df.append(se, ignore_index=True)
  
  counter +=1
  sec = int(time.time() - start)
  print('{}% finished, time: {}, {} min remaining'.format(counter//9763*100, sec, sec * (9763/counter -1)//60))

print("completed")

from google.colab import files
AV_df.to_csv("AV.csv")
files.download('AV.csv')

少し端折っているが全体はこんな感じ。

途中真ん中あたりのfor keyword in AV:のAVはAV女優の名前をリスト型で入れてある。

【pythonコードを読む】AV女優10000人webスクレイピング

この記事のoutput.csvだ。
参考 output.csvgithub.com githubにもデータを公開しています。
以下のコードで使えるようになるはず。

url = 'https://raw.githubusercontent.com/tomowarkar/blog_content/master/dataset/output.csv'
df = pd.read_csv(url)
AV = list(df['name'])

ロードマップ

  1. データを入れる型を作る
  2. DMM APIをたたく
  3. 必要な情報を取り出す
  4. データを格納
  5. 2~4をループ
  6. 最終データをcsv形式でダウンロード

データを入れる型を作る

data = {"name":[],
        "height":[],     
        "cup":[],             
        "hip":[],       
        "waist":[], 
        "bust":[], 
        "blood_type":[],         
        "birthday":[]}
AV_df = pd.DataFrame(data)

毎度おなじみ感。

今回は8項目のデータを取得していく。

DMM APIをたたく

まずはDMM apiを扱う各種設定を終わらせておこう。

参考 DMM Webサービスdmm.com

APIIDはこのページから確認ができる。

参考 API IDの確認dmm.com

IDは’ユーザーネーム-990’という形にしよう。(990~999までの間に設定)

APIID = ''
ID = 'tomowarkar-990'

r = requests.get('https://api.dmm.com/affiliate/v3/ActressSearch?api_id=' + APIID + '&affiliate_id=' + ID + '&keyword=' + keyword + '&output=json').content
  r= json.loads(r)

その都度挙動の確認をしていくと良い

必要な情報を取り出す

参考 リファレンス 女優APIdmm.com

女優APIのリファレンスを見て、得体情報がどこに入っているかを確認しよう。

今回はresult>actressの部分以降に得たい情報がある。

APIをたたくキーワードの女優の名前はDMMのサイトからスクレイピングしたので検索に引っかかった一番目を取得すれば大丈夫だろう。

エラーが出て処理が止まらないようにしっかり対策をしておく。

  try: r = r['result']['actress'][0]
  except: pass
  try: name = r['name']
  except: name = ""
  try: height = r['height']
  except: height = ""
  try: cup = r['cup']
  except: cup = ''
  try: hip = r['hip']
  except: hip =''
  try: waist = r['waist']
  except: waist = ''
  try: bust = r['bust']
  except: bust = ''
  try: blood_type = r['blood_type']
  except: blood_type = ''
  try: birthday = r['birthday']
  except: birthday = ''

データを格納

取得したデータを格納する。

同時にどれくらい作業が進んでいるかを可視化するようにする。

今回は約10000件のデータがある1件あたり1秒かかったとすると約3時間かかる計算だ。

進行度と経過時間、残り時間を出してみた。

  se = pd.Series([name, height, cup, hip, waist, bust, blood_type, birthday], ["name", "height", "cup", "hip", "waist", "bust", "blood_type", "birthday"])
  AV_df = AV_df.append(se, ignore_index=True)
  
  counter +=1
  sec = int(time.time() - start)
  print('{}% finished, time: {}, {} min remaining'.format(counter//9763*100, sec, sec * (9763/counter -1)//60))

print("completed")

実はこの進行度はうまく機能しない。

int(counter*100/9763)とするのがいいだろう。

こんな感じで表示される。

最終データをcsv形式でダウンロード

from google.colab import files
AV_df.to_csv("AV.csv")
files.download('AV.csv')

googlecolab上のデータをcsvに変換してローカルにダウンロードする。

まとめ

参考 scraping_AV.ipynbgithub.com

実際に使ったコードを置いておくので参考にしてみてください。

内容は少し違っています。

次はこのデータを使って機械学習の分類をやっていきたいと思います。

ではでは

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です