Pythonを利用して、APIを集める


我々は最近、あなたの履歴書に追加し、プログラミングについての詳細を学ぶのに役立つことができるプロジェクトのためのいくつかのアイデアを投稿しました.
それらのプロジェクトの1つは、イベントの集合的なサイトを作成するために、ミートアップとeventbrite APIを削ることに関係しました.
これは素晴らしいプロジェクトです、それはいくつかの概念を取る機会を開きます.あなたはアラートシステムを作るためにこのアイデアを使用することができます-ユーザーは、彼らが興味を持っているローカルイベントを追跡するためにAPIキーを入力します.あなたは時間をかけてメトリックを追跡することによって、そこに着く前に、どのライブ行為が非常に人気になるかを予測するサイトを開発することができます.
正直に言って、APIはあなたにメンバー名を与える点にさえ、まともな量のデータを与えます(そして、メンバーが認証されるならば、おそらく電子メールも).それは多くの楽しみ-あなた自身のサイトの基礎にこのデータを使用することができます!

開始する


このプロジェクトを開始するには、バックエンドを構築する必要がある基本的な部分を壊す.必要以上に
  • API「スクレーパー」
  • データベースインターフェース
  • 操作データベース
  • データウェアハウス(オプション)
  • ORM
  • あなたがスクレーパークラスを開発する必要が開始されます.このクラスは、あなたが作っている特定のAPI呼び出しの不可知論者であるべきです.この方法では、特定のクラスまたはスクリプトを各呼び出しに対して行う必要がなくなります.また、APIが変更されると、すべての変数を更新するすべてのスクリプトを通過する多くの時間を費やす必要はありません.
    代わりに、設定を通過し、更新する必要があります.
    それが言われて、我々はすぐに完全に抽象的なクラスを開発しようとすることをお勧めしません.ハードコード化された変数がない完全に抽象化されたクラスを構築しようとすると、最初から、難しいことができます.何かがうまくいかないか、動作しないならば、それは抽象化の層のため、デバッグするのがより難しいです.
    我々は、作品を開発しようとすることによって開始します.
    あなたが作る必要がある最初の決定は、スクレイパーがデータを置いているところです.私たちは、毎日、それ自身のフォルダを持っているフォルダ構造を作成しています.
    一般的なフォルダをサーバー、S 3、または同様のrawファイル構造で使用できます.これらはJSONファイルに保存している生データを簡単に保存する機能を提供します.CSVとTSVのような他のデータ記憶方法は、記述データがフォーマットされる方法によって捨てられます.
    基本的なスクリプトを見てみましょう.どのようにより良い開発され、より良い開発するコードベースのリファクタリングを開始することができます.
    import requests
    import time
    import json
    import sys
    import codecs
    import csv
    
    
    class MeetUpScraper:
    
        api_call_type=""
        config_file="meet_up_config.json"
    
        def get_results(self,params,config_data):
            request=requests.get(config_data[self.api_call_type]['api_endpoint'],params=params)
            data=request.json()
            return data
    
        def main(self,p_config_file):
            cities=[("Seattle","WA")]
            api_key="APIKEY"
    
            for (city,state) in cities:
                per_page=200
                results_we_got = per_page
                offset=0
                while(results_we_got==per_page):
    
                    response = self.get_results(
                    {"sign":"true","country":"US","city":city,"state":state,"radius":10,"key":api_key,"page":per_page,"offset":offset}
                    ,p_config_file
                    )
                    time.sleep(1)
                    offset+=1
                    data={}
                    results_we_got = response['meta']['count']
                    data = response['results']
                    export_file= open("data/data_"+self.api_call_type+"_"+str(offset)+".txt","w")
                    json.dump(data,export_file)
                    export_file.close()
    
        def __init__(self,api_call_type):
            self.api_call_type=api_call_type
            config=open(self.config_file)
            config_data=json.load(config)
            self.main(config_data)
    
    MeetUpScraper("get_event") #for testing
    

    バットから右の1つの場所はAPIキーです.テスト中にハードコードを自分のAPIキーに簡単です.しかし、あなたの最終的なゴールが複数のユーザーにこのデータへのアクセスを得るのを許すことであるならば、あなたは彼らのAPIキーをセットアップします.
    更新する次の部分は、あなたが引っ張っているデータへのハードコード化された参照です.このハードコーディングはコードを1つのAPI呼び出しで動作するよう制限します.この例の1つは、別のエンドポイントを引っ張り、どのようなフィールドをどのようなフィールドから取得するかを参照してください.
    この例では、JSONですべてを捨てています.おそらく、あなたは非常に選択したいです-その場合、あなたはどんなコラムが各々のフィールドに付けられるかについて構成したいかもしれません.
    例えば、
    {
    "get_group":
    {
      "api_endpoint":"http://api.meetup.com/2/groups"
    },
    "get_event":
        {
          "row_list":
            ["country", "city", "created", "rating", "description", "rating", "join_mode", "members", "lon", "lat", "id", "state","urlname"],
          "insert_script":
    
          "INSERT into raw_meet_up_3 (country, city, created, rating, description, rating_2,join_mode, members, lon, lat, id, state,urlname) VALUES( %s )",
             "api_endpoint":"http://api.meetup.com/2/open_events"
        }
    }
    
    
    これは、あなたが使用するAPIイベントの不可知論者を作成することができます.これは、設定を簡単に維持することができますコードの外側に置きます.
    例えば、Meet - upがAPIのエンドポイントやカラム名を変更するとどうなるのでしょうか?さて、代わりに設定ファイルを変更することができます10種類のコードファイルに移動する必要があります.
    次の段階は、データベースとETLを作成し、すべてのデータをロードして格納するシステム、およびJSONファイルからデータを自動的にオペレーティングシステムのデータベースに解析するシステムです.このデータベースは、興味があるかもしれないイベントを追跡するために使用することができます.さらに、データウェアハウスを作成することでメトリックを追跡することができます.
    おそらく、あなたはイベントが人々RSVPを持っている率、またはどのように迅速なイベントが売り切れに興味がある.
    あなたはどのような説明やグループのすぐにスロットから実行を分析することができますに基づいて.
    個人的には、あなたが取ることができる楽しい分析がたくさんあります.
    今後数週間、数ヶ月間、このプロジェクトの開発を継続していきます.これは、おそらくいくつかの分析を行うデータベースを構築する含まれています!
    この作品をお楽しみください!
    あなたがソフトウェア工学についてこのビデオを楽しむならば、同様にこれらのビデオも考慮してください!
    The Advantages Healthcare Providers Have In Healthcare Analytics
    142 Resources for Mastering Coding Interviews
    Learning Data Science: Our Top 25 Data Science Courses
    The Best And Only Python Tutorial You Will Ever Need To Watch
    4 Must Have Skills For Data Scientists
    What Is A Data Scientist