XML APIレスポンスからcsvを作成する必要があります。私は2つの問題を抱えています。 1つ - 何らかの理由で、私が作成しているAPI呼び出しが追加後にリストに保存されていない場合、リストは完全に消えます。再帰APIコールを追加してCSVに結果を書き込む方法は?
2つ - API呼び出しの結果を保存できないため、結果をクロールしてcsvを作成する方法がわかりません。
コードは、まずグループレベルのデータを取得し、各IDを取得してpeople.profile API呼び出しに適用してプロファイル情報を取得するように設定されています。 Iこの部分を行うことができますが、ここではコードです:
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)
コメントでは「人のIDのテキストを解析して、私はAPI呼び出しを反復していて、関数に渡すには、値がリストに保存されていないのストレージ理由のために、コールが終了すると 'storage'が消え、リスト 'storage'を印刷すると 'None'と表示されます。
第二に、y = xml_event_info(i.text)
は、私はCSVに解析する必要がある実際の人のプロファイルのデータがあり、これはXMLがどのように見えるかです:
<?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>
が、私はすぐにcsvファイルの各XMLタグに列を作ることができますとにかくあり?私は手動でどちらかのフィールドに書き込むことはできません。しかし結果をCSVに保存して分割したいと考えています。 CSVは次のようになります。
ID FirstName LastName EmailAddr
12312 John Smith [email protected]
ありがとうございます。
Rustyは、関数 'xml_event_info'がその結果を返さないことに注意してください。 –
それは#1を解決しました - ありがとうございました! – RustyShackleford