通过必应广告 API 开始使用 Python
若要开始使用 Python 开发必应广告 API 应用程序,可以从 提供的示例 开始,或遵循 Web 或 桌面 应用程序的应用程序演练之一。
你将需要具有在 生产 或 沙盒中访问Microsoft广告的用户凭据。 对于生产环境,需要 生产开发人员令牌。 所有沙盒客户端都可以使用通用沙盒开发人员令牌,即 BBD37VB98。 有关详细信息,请参阅 必应广告 API 和 沙盒入门。
若要通过 OAuth 进行身份验证,还必须注册应用程序并获取相应的客户端标识符。 如果要开发 Web 应用程序,还需要记下客户端密码和重定向 URI。 有关在生产环境中注册应用程序和授权代码授予流的详细信息,请参阅 使用 OAuth 进行身份验证和使用 SDK 进行身份验证。 尽管在生产环境中必须使用自己的应用程序 ID (即客户端 ID) ,但所有Microsoft广告客户都可以使用沙盒中的公共“教程示例应用”客户端 ID,即 00001111-aaaa-2222-bbbb-3333cccc4444。 有关详细信息,请参阅 沙盒。
相关性
必应广告 Python SDK 使用 suds-jurko-0.6 库作为所有必应广告 API 编程元素的代理。 有关将 Suds 与 Microsoft 广告配合使用的详细信息,请参阅 使用 Suds。
必应广告 Python SDK 支持 Python 3.3 或更高版本。 应安装并运行其中一个受支持的版本。
安装 SDK
若要首次安装必应广告 Python SDK ,请从 IDE 或命令行提示符运行以下命令。
pip.exe install bingads
若要确认已安装必应广告 Python SDK,请运行以下命令。 输出列表中应看到 (<版本>) 的 bingads 。
pip.exe list
如果已安装必应广告 Python SDK,可以运行此命令来获取最新位。
pip.exe install --upgrade bingads
演练
安装必应广告 Python SDK 后,可以从 GitHub 下载示例,也可以按照演练 :Python 中的必应广告 API Web 应用程序或演练:Python 应用程序中的必应广告API 桌面应用程序 的应用程序之一进行操作。
使用 Suds
必应广告 Python SDK 使用 suds-community SOAP SDK 来实例化必应广告 API 的编程元素,例如服务操作、数据对象和值集。 将通过 ServiceClient、BulkServiceManager 或 ReportingServiceManager 类传递 Suds 工厂对象。 由于 Suds 作为 SDK 依赖项包含在内,因此可以直接使用 Suds 调用任何必应广告 API 服务操作。
请记住以下与必应广告 Python SDK 中的 Suds 相关的规则、建议和提示。
我们听到的最常见异常之一是 ERROR:suds.resolver: (ClassGoesHere) 未找到。 通常,可以使用 Suds 对象的命名空间前缀(例如 )来解决此问题。
ns3:ArrayOfstring
提示
若要发现具有可用于每个服务的命名空间前缀的所有 SOAP 对象,可以打印 soap 客户端。 例如,以下语句将返回 Campaign、AdGroup、ExpandedTextAd 和 Keyword 等。
campaign_service = ServiceClient( service='CampaignManagementService', version = 13, authorization_data=authorization_data, environment = ENVIRONMENT, ) print campaign_service.soap_client
对于通过 Suds 传递到市场活动管理服务的许多对象,可以创建字典对象。 从性能角度来看,字典方法比替代 service.factory.create 方法要快。
ad_groups = { 'AdGroup': [ { 'Name': "Women's Shoe Sale", 'AdDistribution': 'Search', 'EndDate': { 'Day': '31', 'Month': '12', 'Year': strftime("%Y", gmtime()) }, 'CpcBid': { 'Amount': 0.09 }, 'Language': 'English' }, ] }
对于派生类型(如 ExpandedTextAd、 NegativeKeyword 和 NegativeKeywordList),Suds 库要求使用 factory.create。
ads = campaign_service.factory.create('ArrayOfAd') expanded_text_ad=campaign_service.factory.create('ExpandedTextAd') expanded_text_ad.TitlePart1='Contoso' expanded_text_ad.TitlePart2='Quick & Easy Setup' expanded_text_ad.TitlePart3='Seemless Integration' expanded_text_ad.Text='Find New Customers & Increase Sales!' expanded_text_ad.TextPart2='Start Advertising on Contoso Today.' expanded_text_ad.Path1='seattle' expanded_text_ad.Path2='shoe sale' expanded_text_ad.Type='ExpandedText' expanded_text_ad.Status=None expanded_text_ad.EditorialStatus=None # With FinalUrls you can separate the tracking template, custom parameters, and # landing page URLs. final_urls=campaign_service.factory.create('ns3:ArrayOfstring') final_urls.string.append('https://www.contoso.com/womenshoesale') expanded_text_ad.FinalUrls=final_urls # Final Mobile URLs can also be used if you want to direct the user to a different page # for mobile devices. final_mobile_urls=campaign_service.factory.create('ns3:ArrayOfstring') final_mobile_urls.string.append('https://mobile.contoso.com/womenshoesale') expanded_text_ad.FinalMobileUrls=final_mobile_urls # Set custom parameters that are specific to this ad. url_custom_parameters=campaign_service.factory.create('CustomParameters') parameters=campaign_service.factory.create('ArrayOfCustomParameter') custom_parameter1=campaign_service.factory.create('CustomParameter') custom_parameter1.Key='promoCode' custom_parameter1.Value='PROMO' + str(index) parameters.CustomParameter.append(custom_parameter1) custom_parameter2=campaign_service.factory.create('CustomParameter') custom_parameter2.Key='season' custom_parameter2.Value='summer' parameters.CustomParameter.append(custom_parameter2) url_custom_parameters.Parameters=parameters expanded_text_ad.UrlCustomParameters=url_custom_parameters ads.Ad.append(expanded_text_ad)
必须为 Suds 客户端指定任何非基元元素,例如 AdEditorialStatus 类型的 EditorialStatus,即使必应广告 API 不需要此类元素也是如此。
市场活动管理 API 操作要求,如果指定了非基元,则它必须是服务定义的值之一,即它不能为 nil 元素。 由于 Suds 需要非基元,并且Microsoft Advertising 不会接受 nil 元素来代替枚举值,因此必须将非基元设置为“无”。 另请注意,如果元素已准备就绪,则必须将其设置为 None。 例如,设置
expanded_text_ad.EditorialStatus=None
。
若要调用必应广告 API 服务操作的相应方法,可以使用 ServiceClient 类的实例并传递 Suds 工厂对象。 有关详细信息,请参阅 使用 SDK 进行身份验证。