domaintools的官方python api
domaintools_api的Python项目详细描述
安装Domaintools的API
要安装API,请运行
pip install domaintools_api --upgrade
理想情况下,在虚拟环境中。
使用API
开始创建api实例-传入您的凭据
fromdomaintoolsimportAPIapi=API(USER_NAME,KEY)
然后,每个api端点都作为api对象上的方法公开,其中 应传递到传入的终结点的任何参数 作为方法参数:
api.domain_search('google',exclude='photos')
您可以获得与之交互的每个端点的概述 使用内置帮助功能:
help(api)
如果适用,本机python循环可以直接用于循环 通过任何结果:
forresultinapi.domain_search('google',exclude='photos'):print(result['sld'])
您还可以使用上下文管理器来确保对结果的处理 仅当请求成功时发生:
withapi.domain_search('google',exclude='photos')asresults:print(results)
对于期望返回单个项的api调用,可以 直接与结果交互:
profile=api.domain_profile('google.com')title=profile['website_data']['title']
对于任何需要单一类型数据的api调用,您可以 直接转换为所需类型:
float(api.reputation('google.com'))==0.0int(api.reputation('google.com'))==0
从domaintools返回的整个结构可以通过执行 .data(),而可操作的响应信息可以是 通过执行.response():
检索api.domain_search('google').data()=={'response':{...}}api.domain_search('google').response()=={...}
您可以通过 呼叫.(html|xml|json)():
html=str(api.domain_search('google').json())xml=str(api.domain_search('google').xml())html=str(api.domain_search('google').html())
如果任何API调用失败,则在 domaintools.exceptions将筹集:
api.domain_profile('notvalid').data()---------------------------------------------------------------------------BadRequestExceptionTraceback(mostrecentcalllast)<ipython-input-3-f9e22e2cf09d>in<module>()---->1api.domain_profile('google').data()/home/tcrosley/projects/external/python_api/venv/lib/python3.5/site-packages/domaintools-0.0.1-py3.5.egg/domaintools/base_results.pyindata(self)25self.api._request_session=Session()26results=self.api._request_session.get(self.url,params=self.kwargs)--->27self.status=results.status_code28ifself.kwargs.get('format','json')=='json':29self._data=results.json()/home/tcrosley/projects/external/python_api/venv/lib/python3.5/site-packages/domaintools-0.0.1-py3.5.egg/domaintools/base_results.pyinstatus(self,code)4445elifcode==400:--->46raiseBadRequestException()47elifcode==403:48raiseNotAuthorizedException()BadRequestException:
异常将包含状态代码和 例外情况:
try:api.domain_profile('notvalid').data()exceptExceptionase:asserte.code==400assert'We could not understand your request'ine.reason['error']['message']
您可以在异常处理之外获取响应的状态代码 通过执行.status:
api.domain_profile('google.com').status==200
异步使用api
域工具异步示例
如果您在Python3.5+上运行,则会自动运行domaintools的API 支持异步使用:
search_results=awaitapi.domain_search('google')
内置了对异步上下文管理器的支持:
asyncwithapi.domain_search('google')assearch_results:# do things
直接异步循环:
asyncforresultinapi.domain_search('google'):print(result)
所有异步操作都可以安全地与非异步操作混合使用- 如果先完成异步调用,则获得最佳性能:
profile=api.domain_profile('google.com')awaitprofiletitle=profile['website_data']['title']
通过命令行客户端与api交互
domaintools cli示例
在使用pip安装domaintools_api之后,立即 domaintools命令行客户端将对您可用:
domaintools --help
要使用-只需传入要与之一起进行的API调用 需要的参数和您的凭据:
domaintools domain_search google --max_length 10 -u $TEST_USER -k $TEST_KEY
也可以指定所需的格式(html、xml、json或 结果列表:
domaintools domain_search google --max_length 10 -u $TEST_USER -k $TEST_KEY -f html
为了避免重复输入api密钥,可以指定它们 在~/.dtapi中,用新行分隔:
API_USER API_KEY