Holen Sie sich LEAD-Daten mit der REST-API von Marketo in Python

Hintergrund

Ich möchte Marketo-Daten erhalten. Notieren Sie sich das Beispiel, um die Leads-Daten in großen Mengen zu erhalten. Es kann auch für andere Datenressourcen verwendet werden.

Bevor du anfängst

Machen Sie sich ein Bild von der REST-API, indem Sie Erste Schritte ausführen REST API

Sie können die Atmosphäre auf der Erklärungsseite für die Massenerfassung erfassen Bulk Extract

Beispielcode für die Massenerfassung

import requests
import json
import time
import os
import pendulum
from google.cloud import bigquery

#↓ Kann über den Verwaltungsbildschirm abgerufen werden
# https://developers.marketo.com/rest-api/
ENDPOINT = 'YOUR_ENDPOINT'
CLIENT_ID = 'YOUR_CLIENT_ID'
CLIENT_SECRET = 'YOUR_CLIENT_SECRET'


class MarketoAPI:
    def __init__(self, target_date):
        self.target_date = target_date
        self.token = self.get_token()
        self.header = {
            'Authorization': 'Bearer {}'.format(self.token),
            'content-type': 'application/json'
        }
        self.export_id = None  #Wird beim Erstellen eines Jobs festgelegt

    # CLIENT_ID und KUNDE_Stellen Sie ein Token von SECRET aus
    #Beachten Sie, dass das vom Verwaltungsbildschirm ausgegebene Token sofort abgelaufen ist.
    def get_token(self):
        URL = '{}/identity/oauth/token?client_id={}&client_secret={}&grant_type=client_credentials'.format(
            ENDPOINT, CLIENT_ID, CLIENT_SECRET
        )
        headers = {'content-type': 'application/json'}
        r = requests.get(URL, headers=headers)

        if r.status_code != requests.codes.ok:
            r.raise_for_status()

        return r.json()['access_token']

    #Dieses Mal werden wir die Bulk Extract API verwenden
    #Erstellen Sie zunächst einen Job, um LEAD zu erhalten
    # https://developers.marketo.com/rest-api/bulk-extract/bulk-lead-extract/
    def create(self):
        URL = '{}/bulk/v1/leads/export/create.json'.format(ENDPOINT)

        payload = {
            #Geben Sie das Feld an, das Sie erhalten möchten
            #Die Felder, die angegeben werden können, sind`GET /rest/v1/leads/describe.json`Kann mit der API von bestätigt werden
            "fields": [
                "id",
                "email",
                "createdAt",
                "updatedAt"
            ],
            "format": "CSV",
            #Geben Sie einen Filter an
            #Der Fileter, der angegeben werden kann, ist in ↓ doc geschrieben
            # https://developers.marketo.com/rest-api/bulk-extract/bulk-lead-extract/
            "filter": {
                "createdAt": {
                    "startAt": self.target_date.isoformat(),
                    "endAt": self.target_date.end_of('day').isoformat()
                }
            }
        }

        r = requests.post(URL, data=json.dumps(payload), headers=self.header)

        if r.status_code != requests.codes.ok:
            r.raise_for_status()

        export_id = r.json()['result'][0]['exportId']
        self.export_id = export_id
        return export_id

    # create()Jobs werden nicht nur durch Erstellen in verarbeitet
    #Sie können auf die Ausführung warten, indem Sie den Job hier in die Warteschlange stellen
    def enqueue(self):
        URL = '{}/bulk/v1/leads/export/{}/enqueue.json'.format(
            ENDPOINT, self.export_id
        )
        r = requests.post(URL, headers=self.header)

        if r.status_code != requests.codes.ok:
            r.raise_for_status()

    #Eine Methode zum Abrufen des Statusp, bis die Verarbeitung des in die Warteschlange gestellten Jobs abgeschlossen ist
    def check_until_done(self):
        URL = '{}/bulk/v1/leads/export/{}/status.json'.format(
            ENDPOINT, self.export_id
        )

        #Warten Sie 3 Minuten vor der Anfrage
        #3 Mal ausführen, bis abgeschlossen
        for i in range(3):
            time.sleep(60 * 3)
            r = requests.get(URL, headers=self.header)
            if r.status_code == requests.codes.ok:
                if r.json()['result'][0]['status'] == 'Completed':
                    return True

        if r.status_code != requests.codes.ok:
            r.raise_for_status()
        else:
            raise('job status is: ' + r.json()['result'][0]['status'])

    #Methode zum Herunterladen der Datei nach Abschluss des Auftrags
    def dl_file(self):
        URL = '{}/bulk/v1/leads/export/{}/file.json'.format(
            ENDPOINT, self.export_id
        )
        r = requests.get(URL, headers=self.header)

        if r.status_code != requests.codes.ok:
            r.raise_for_status()

        with open('./marketo_lead_file_{}.csv'.format(self.target_date.strftime('%Y%m%d')), mode='w') as f:
            f.write(r.text)

Unter der Bedingung dieses Erstellens ist die folgende Datei DL

id,email,createdAt,updatedAt
111111,[email protected],2020-01-02T15:35:37Z,2020-01-02T15:35:36Z
222222,[email protected],2030-01-02T22:58:07Z,2020-01-02T22:58:07Z

Recommended Posts

Holen Sie sich LEAD-Daten mit der REST-API von Marketo in Python
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
Abrufen von Salesforce-Daten mithilfe der REST-API
Holen Sie sich Google Fit API-Daten in Python
[Python] Holen Sie sich alle Kommentare mit Youtube Data Api
Holen Sie sich die Bild-URL mithilfe der Flickr-API in Python
[Python] Abrufen von Insight-Daten mithilfe der Google My Business-API
Holen Sie sich LeapMotion-Daten in Python.
Datenerfassung mit Python Googlemap API
Abrufen von Amazon-Daten mit Keep API # 1 Abrufen von Daten
Implementieren Sie die REST-API schnell in Python
Drücken Sie in Python auf REST, um Daten von New Relic abzurufen
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Mausbedienung mit Windows-API in Python
Versuchen Sie es mit der Wunderlist-API in Python
Holen Sie sich Suica Balance in Python (mit libpafe)
Versuchen Sie, die Kraken-API mit Python zu verwenden
Erhalten Sie E-Mails mithilfe der Google Mail-API in Java
Erstellen einer Google-Tabelle mit der Python / Google Data-API
[Python] Ich habe versucht, mithilfe der YouTube-Daten-API verschiedene Informationen abzurufen!
FX-Datenerfassung mit der OANDA REST-API
Entwicklung und Bereitstellung der REST-API in Python mit Falcon Web Framework
Holen Sie sich mit Python Zeitreihendaten von k-db.com
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Holen Sie sich Aktienkursdaten mit Quandl API [Python]
Lassen Sie uns Emotionen mithilfe der Emotions-API in Python beurteilen
So erhalten Sie Artikeldaten mithilfe der Qiita-API
[WP REST API v2] Laden Sie Bilder mit Python hoch
Versuchen Sie, die ChatWork-API und die Qiita-API in Python zu verwenden
Versuchen Sie, die DropBox Core-API mit Python zu verwenden
Evernote-API in Python
Datenbereinigung mit Python
Holen Sie sich Datum in Python
C-API in Python 3
Rufen Sie Daten über die Salesforce-API (Bulk-API) in Python ab und laden Sie sie in BigQuery
Erstellen Sie mit Selenium einen Datenerfassungsbot in Python
Python-Anfänger haben versucht, die REST-API an einem Tag zu implementieren
Laden Sie eine JPG-Datei mit der Google Drive-API in Python hoch
Registrieren Sie gemeinsam Daten im Firestore mithilfe der CSV-Datei in Python
Grundeinstellungen bei Verwendung der foursquare-API mit Python
Holen Sie sich mit Python Daten vom GPS-Modul mit 10 Hz
OpenVINO verwendet die Inference Engine Python API in einer PC-Umgebung
Verwenden Sie die Such-API der National Parliament Library in Python
Als offene Daten mithilfe der CKAN-API in Python hochladen und automatisch mit Github-Aktionen verknüpfen
Hit Mastodons API in Python
Holen Sie sich YouTube-Kommentare in Python
Behandeln Sie Umgebungsdaten in Python
Holen Sie sich letzten Monat in Python
Holen Sie sich Youtube-Daten mit Python
Holen Sie sich die Terminalgröße in Python
Holen Sie sich explizit EOF in Python
Blender Python API in Houdini (Python 3)
Holen Sie sich Evernote-Notizen in Python
Datenanalyse mit Python-Pandas
Übersetzt mit Googletrans in Python
Verwenden des Python-Modus in der Verarbeitung
Holen Sie sich japanische Synonyme mit Python
Holen Sie sich Ihre Herzfrequenz von der Fitbit-API in Python!
Erhalten Sie Daten mithilfe der API des Ministeriums für innere Angelegenheiten und Kommunikation
Aufblasen von Textdaten durch erneute Übersetzung mithilfe der Google-Übersetzung in Python