Je dois créer csv sur une réponse API XML. J'ai deux problèmes. Un - pour une raison quelconque, les appels d'API que je fais ne sont pas enregistrés dans une liste après l'ajout, la liste disparaît complètement. Deux - puisque je ne peux pas stocker les résultats de l'appel de l'API, je ne sais pas comment explorer les résultats et créer un csv.Comment ajouter des appels API récursifs et écrire des résultats au format CSV?
Le code est configuré pour obtenir d'abord des données au niveau du groupe, puis prendre chaque ID et appliquer à l'appel API people.profile pour obtenir leurs informations de profil. Je peux faire cette partie, voici le code:
def xml_event_info(eventID):
xml ='''
<?xml version="1.0" encoding="UTF-8"?>
<YourMembership>
<Version>2.25</Version>
<ApiKey>xxxx</ApiKey>
<CallID>001</CallID>
<></>
<SaPasscode>xxxx</SaPasscode>
<Call Method = "Sa.People.Profile.Get">
<ID>{}</ID>
</Call>
</YourMembership>
'''
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
r = requests.post('https://api.yourmembership.com',
data=xml.format(eventID), headers=headers)
print(r.text)
xml ='''
<?xml version="1.0" encoding="utf-8" ?>
<YourMembership>
<Version>2.25</Version>
<ApiKey>xxxx</ApiKey>
<CallID>001</CallID>
<SaPasscode>xxxx</SaPasscode>
<Call Method="Sa.Groups.Group.GetMembershipLog">
<GroupID>12345</GroupID>
<ItemID></ItemID>
<StartDate></StartDate>
</Call>
</YourMembership>
'''
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
r = requests.post('https://api.yourmembership.com', data=xml, headers=headers)
print r.text
# BUILD XML TREE OBJECT
tree = et.fromstring(r.text)
storage = []
# PARSE People ID TEXT AND PASS INTO FUNCTION
for i in tree.iterfind('.//ID'):
y = xml_event_info(i.text)
storage.append(y)
Au commentaire « analyser les textes d'identité et passer dans la fonction, comme je suis itérer sur l'appel API, les valeurs ne sont pas enregistrées dans la liste » stockage 'et pour une raison, une fois l'appel terminé' stockage 'disparaît, et quand je vais imprimer la liste' stockage 'il est dit' Aucun '.
En second lieu, le y = xml_event_info(i.text)
est le peuple réel données de profil que je dois analyser en CSV et voici comment le XML ressemble:
<?xml version="1.0" encoding="utf-8" ?>
<YourMembership_Response>
<ErrCode>0</ErrCode>
<ExtendedErrorInfo></ExtendedErrorInfo>
<Sa.People.Profile.Get>
<ID>098765</ID>
<WebsiteID>1234</WebsiteID>
<PrimaryGroupCode>abc</PrimaryGroupCode>
<IsMember>1</IsMember>
<IsNonMember>0</IsNonMember>
<Registered>2017-09-07 18:48:00</Registered>
<LastUpdated>2017-09-11 15:19:54</LastUpdated>
<ImportID>u293248</ImportID>
<ConstituentID></ConstituentID>
<EmailAddr>xxxx</EmailAddr>
<EmailBounced>0</EmailBounced>
<NamePrefix>xxx</NamePrefix>
<FirstName>John</FirstName>
<MiddleName></MiddleName>
<LastName>Smith</LastName>
<NameSuffix></NameSuffix>
<Nickname></Nickname>
<Gender>M</Gender>
<Birthdate></Birthdate>
<MaritalStatus></MaritalStatus>
<MaidenName></MaidenName>
<SpouseName></SpouseName>
<AnniversaryDate></AnniversaryDate>
<Employer>Welk Resorts</Employer>
<Title>xxxx</Title>
<Profession></Profession>
<Membership>xxxxx</Membership>
<MembershipExpiry>2017-09-08 00:00:00</MembershipExpiry>
<MemberTypeCode>xxxx</MemberTypeCode>
<Approved>1</Approved>
<Suspended>1</Suspended>
<Username>[email protected]</Username>
<PasswordHash>xxxx</PasswordHash>
<AltEmailAddr>xxxx</AltEmailAddr>
<HomeAddrLines></HomeAddrLines>
<HomeCity></HomeCity>
<HomeLocation>xxxx</HomeLocation>
<HomePostalCode></HomePostalCode>
<HomeCountry>United States</HomeCountry>
<Website></Website>
<HomePhAreaCode></HomePhAreaCode>
<HomePhone></HomePhone>
<MobileAreaCode></MobileAreaCode>
<Mobile></Mobile>
<EmpAddrLines></EmpAddrLines>
<EmpCity></EmpCity>
<EmpLocation>Alabama</EmpLocation>
<EmpPostalCode></EmpPostalCode>
<EmpCountry>United States</EmpCountry>
<BusinessWebsite></BusinessWebsite>
<EmpPhAreaCode></EmpPhAreaCode>
<EmpPhone></EmpPhone>
<EmpFaxAreaCode></EmpFaxAreaCode>
<EmpFax></EmpFax>
<HeadshotImageURI></HeadshotImageURI>
<LastRenewalReminderSent></LastRenewalReminderSent>
<GamificationPoints></GamificationPoints>
<MasterID></MasterID>
<LastRenewalDate>2017-09-07 00:00:00</LastRenewalDate>
<ApprovalDate>9/11/2017 00:00:00 PM</ApprovalDate>
<LastModifiedDate>2017-09-11 00:00:00 </LastModifiedDate>
<QueuedForDelete>0</QueuedForDelete>
<QueuedForDeleteDate></QueuedForDeleteDate>
<Latitude>0</Latitude>
<Longitude>0</Longitude>
<MembershipExpires>1</MembershipExpires>
<MembershipEffectiveExpiresDate>2017-09-08 00:00:00</MembershipEffectiveExpiresDate>
<CustomFieldResponses>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values>
<Value>Member Referral</Value>
</Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values>
<Value>Individual</Value>
</Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="ReferredBy" Visibility="">
<Values>
<Value>xxxx</Value>
</Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values>
<Value>Practitioner</Value>
</Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values>
<Value>xxxxx</Value>
</Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="ApprovalDate" Visibility="">
<Values>
<Value>9.8.17</Value>
</Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="ChapterApproval" Visibility="">
<Values>
<Value>declined 9.11.17</Value>
</Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="whois" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="HelpingHandsSummary" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="APCProspect" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="formerchapter" Visibility="">
<Values>
<Value>San Diego</Value>
</Values>
</CustomFieldResponse>
</CustomFieldResponses>
</Sa.People.Profile.Get>
</YourMembership_Response>
<?xml version="1.0" encoding="utf-8" ?>
<YourMembership_Response>
<ErrCode>0</ErrCode>
<ExtendedErrorInfo></ExtendedErrorInfo>
<Sa.People.Profile.Get>
<ID>098765</ID>
<WebsiteID>1234</WebsiteID>
<PrimaryGroupCode>abc</PrimaryGroupCode>
<IsMember>1</IsMember>
<IsNonMember>0</IsNonMember>
<Registered>2017-09-07 18:48:00</Registered>
<LastUpdated>2017-09-11 15:19:54</LastUpdated>
<ImportID>u293248</ImportID>
<ConstituentID></ConstituentID>
<EmailAddr>xxxx</EmailAddr>
<EmailBounced>0</EmailBounced>
<NamePrefix>xxx</NamePrefix>
<FirstName>John</FirstName>
<MiddleName></MiddleName>
<LastName>Smith</LastName>
<NameSuffix></NameSuffix>
<Nickname></Nickname>
<Gender>M</Gender>
<Birthdate></Birthdate>
<MaritalStatus></MaritalStatus>
<MaidenName></MaidenName>
<SpouseName></SpouseName>
<AnniversaryDate></AnniversaryDate>
<Employer>Welk Resorts</Employer>
<Title>xxxx</Title>
<Profession></Profession>
<Membership>xxxxx</Membership>
<MembershipExpiry>2017-09-08 00:00:00</MembershipExpiry>
<MemberTypeCode>xxxx</MemberTypeCode>
<Approved>1</Approved>
<Suspended>1</Suspended>
<Username>[email protected]</Username>
<PasswordHash>xxxx</PasswordHash>
<AltEmailAddr>xxxx</AltEmailAddr>
<HomeAddrLines></HomeAddrLines>
<HomeCity></HomeCity>
<HomeLocation>xxxx</HomeLocation>
<HomePostalCode></HomePostalCode>
<HomeCountry>United States</HomeCountry>
<Website></Website>
<HomePhAreaCode></HomePhAreaCode>
<HomePhone></HomePhone>
<MobileAreaCode></MobileAreaCode>
<Mobile></Mobile>
<EmpAddrLines></EmpAddrLines>
<EmpCity></EmpCity>
<EmpLocation>Alabama</EmpLocation>
<EmpPostalCode></EmpPostalCode>
<EmpCountry>United States</EmpCountry>
<BusinessWebsite></BusinessWebsite>
<EmpPhAreaCode></EmpPhAreaCode>
<EmpPhone></EmpPhone>
<EmpFaxAreaCode></EmpFaxAreaCode>
<EmpFax></EmpFax>
<HeadshotImageURI></HeadshotImageURI>
<LastRenewalReminderSent></LastRenewalReminderSent>
<GamificationPoints></GamificationPoints>
<MasterID></MasterID>
<LastRenewalDate>2017-09-07 00:00:00</LastRenewalDate>
<ApprovalDate>9/11/2017 00:00:00 PM</ApprovalDate>
<LastModifiedDate>2017-09-11 00:00:00 </LastModifiedDate>
<QueuedForDelete>0</QueuedForDelete>
<QueuedForDeleteDate></QueuedForDeleteDate>
<Latitude>0</Latitude>
<Longitude>0</Longitude>
<MembershipExpires>1</MembershipExpires>
<MembershipEffectiveExpiresDate>2017-09-08 00:00:00</MembershipEffectiveExpiresDate>
<CustomFieldResponses>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values>
<Value>Member Referral</Value>
</Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values>
<Value>Individual</Value>
</Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="ReferredBy" Visibility="">
<Values>
<Value>xxxx</Value>
</Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values>
<Value>Practitioner</Value>
</Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values>
<Value>xxxxx</Value>
</Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="xxxx" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="ApprovalDate" Visibility="">
<Values>
<Value>9.8.17</Value>
</Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="ChapterApproval" Visibility="">
<Values>
<Value>declined 9.11.17</Value>
</Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="whois" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="HelpingHandsSummary" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="APCProspect" Visibility="">
<Values></Values>
</CustomFieldResponse>
<CustomFieldResponse FieldCode="formerchapter" Visibility="">
<Values>
<Value>San Diego</Value>
</Values>
</CustomFieldResponse>
</CustomFieldResponses>
</Sa.People.Profile.Get>
</YourMembership_Response>
Y at-il de toute façon je peux rapidement faire de chaque balise xml une colonne dans une csv ? Cela ne me dérange pas de taper manuellement les champs pour écrire si j'ai aussi. Mais souhaitez enregistrer et diviser les résultats en CSV. Le CSV devrait ressembler à ceci:
ID FirstName LastName EmailAddr
12312 John Smith [email protected]
Merci d'avance.
Rusty, notez que la fonction 'xml_event_info' ne retourne pas son résultat. –
Cela a résolu # 1 - merci Bill! – RustyShackleford