Рубрики
Без рубрики

Использование Python, чтобы скрепить API встречи

Недавно мы разместили некоторые идеи для проектов, которые вы можете принять, чтобы добавить в свое резюме и помочь вам лир … Теги с Python, SQL.

Недавно мы разместили некоторые идеи для проектов, которые вы можете принять, чтобы добавить в свое резюме и помочь вам узнать больше о программировании. Один из тех проектов включал соскребацию API-APIS и Eventbrite для создания совокупного сайта событий. Это отличный проект, и он открывает возможность взять на несколько концепций. Вы можете использовать эту идею для создания системы оповещения – пользователь вводит свои ключи API для отслеживания местных событий, в которых они представляют интерес. Вы можете разработать сайт для прогнозирования, какие живые акты станут очень популярными, прежде чем они доберутся туда, отслеживая метрики со временем.

Честно говоря, API дают приличное количество данных, даже до такой степени, что дает вам имена участников (и предположительно электронной почты, если участник аутентифицирован). Это очень весело – вы можете использовать эти данные на основе вашего собственного сайта!

Начать:

Чтобы начать этот проект, сломайте основные части, которые вам нужно будет построить бэкэн. Более вероятно, вам понадобится:

  • API “Скребок”
  • Интерфейс базы данных
  • Операционная база данных
  • Склад данных (необязательно)
  • Омм

Чтобы начать вам нужно будет разработать класс скребка. Этот класс должен быть агностиком определенного вызова API. Таким образом, вы можете избежать необходимости сделать определенный класс или сценарий для каждого вызова. Кроме того, когда API меняется, вам не придется проводить столько времени, проходящего через каждый скрипт, чтобы обновить каждую переменную.

Вместо этого вам нужно только пройти и обновлять конфигурации. Это говорит, мы не рекомендуем пытаться развить совершенно абстрактный класс прямо сейчас. Попытка построить совершенно абстрактный класс, который не имеет жестких переменных, с самого начала может быть сложно. Если что-то пойдет не так или не работает, то сложнее отладки из-за слоев абстракции.

Мы начнем с попыток развить детали, которые работают.

Первое решение, которое вам нужно сделать, это то, где скребок будет помещать данные. Мы создаем структуру папки, в которой каждый день имеет свою собственную папку.

Вы можете использовать общую папку на сервере, S3 или аналогичную структуру сырой файлов. Они предлагают возможность легко хранить необработанные данные, которые мы храним в файле 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

Одно место прямо с летучей мыши – ключ API. В то время как вы тестируете, это легко в трудном порядке свой собственный ключ API. Но если ваша возможная цель состоит в том, чтобы позволить нескольким пользователям получить доступ к этим данным, вы захотите, чтобы их ключевые ключи API настроили.

Следующая часть, которую вы захотите обновить, – это жесткодируемые ссылки на данные, которые вы тянете. Это жесткое кодирование ограничивает код только работать только с одним вызовом API. Одним из примеров этого является то, как мы вытягиваем различные конечные точки и ссылаться на какие поля вы хотели бы потянуть из того, что возвращается. Для этого примера мы просто сбрасываем все в 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. Это помещает настройки вне кода, что может быть проще для обслуживания.

Например, что произойдет, если встреча меняет конечные точки API или имена столбцов? Ну, вместо того, чтобы пойти на 10 различных файлов кода, вы можете просто изменить файл конфигурации.

Следующим этапом является создание базы данных и ETL, загружать и хранить все данные, а также систему, которая автоматически определяет данные из файлов JSON в базу данных операций. Эта база данных может использоваться, чтобы помочь отслеживать события, которые вас могут быть заинтересованы. Кроме того, создание хранилища данных может помочь отслеживать метрики.

Возможно, вы заинтересованы в курсе, на которых события у людей RSVP или насколько быстро события распроданы.

Основываясь на том, вы могли бы проанализировать, какие типы описаний или групп, которые быстро исчерпают слоты.

Лично, есть много веселого анализа, который вы могли бы взять. В течение следующих нескольких недель и месяцев мы будем работать, чтобы продолжить развитие этого проекта. Это включает в себя создание базы данных, может быть, выполнение некоторого анализа и многое другое!

Мы надеемся, что вам понравилось этот кусок!

Если вам понравилось это видео о программной технике, а затем рассмотрите эти видео! Преимущества поставщиков здравоохранения имеют в аналитике здравоохранения 142 Ресурсы для освоения кодирования интервью Учащиеся науки о данных: Наши лучшие 25 курсов науки о данных Лучший и единственный учебник Python, который вам когда-либо нужно будет смотреть Динамически объемная вставка данных CSV в SQL Server 4 Должен иметь навыки для данных ученых Что такое ученый данных

Оригинал: “https://dev.to/seattledataguy/using-python-to-scrape-the-meet-up-api-316p”