通过必应广告 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 的编程元素,例如服务操作、数据对象和值集。 将通过 ServiceClientBulkServiceManager 或 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'
                },
            ]
        }
    
  • 对于派生类型(如 ExpandedTextAdNegativeKeywordNegativeKeywordList),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 进行身份验证

另请参阅

必应广告 API 客户端库
必应广告 API 代码示例
必应广告 API Web 服务地址
处理服务错误和异常
沙盒