Python脚本调用腾讯地图接口

Python脚本调用腾讯地图接口

腾讯地图提供的有公开的webServerAPI,BAT在很多领域三分天下,地图领域也是如此。腾讯地图在几年以前还是烂的掉渣,自从腾讯的很多生态合作伙伴使用了之后,现状大为改观,现在接口是越来越规范,越来越强大和丰富了,毕竟也是腾讯花了大力气去优化和提高的。据说腾讯地图连腾讯内部很多人都觉得做的不好,经常吐槽,与其他几家相比,功能、性能、准确度多个方面处于下风,现在得益于生态伙伴的使用反馈,腾讯地图在不断的升级。现在与腾讯云绑在一起,看来是要搞大事情,虽然现在做的依然比较差,但是看好腾讯地图以后的发展,毕竟产业互联网现阶段很多领域都会用到地图的能力。

腾讯地图公开api地址 https://lbs.qq.com/webservice_v1/index.html

我们尝试使用python脚本去访问,举一个简单的例子,输入了一个中文地址,想知道这个地址距离某个地点(商场中心、体育馆、火车站、机场)等的距离,那么必须知道地址对应的经纬度数据,这就要查询地图提供的接口了。好,现在输入是一个中文地址,输出是这个地址的经纬度数据,来

step 1

在腾讯地图官网申请一个开发者密钥secKey,如果是个人开发者很好申请,如果是企业的话,需要提交一个使用情况的申请

step 2

我们选择一个请求方式,Get请求或者Post请求,这两者都可以访问

Get请求方式
# -*- encoding=utf-8 -*-
import time
import requests

developer_key = 'your key'  // 这里为你申请的开发者key


# Get请求测试
def address_coordinate_get_request(location):
    parameters = {'location': location, 'key': developer_key}
    parameters = {}
    base = 'http://apis.map.qq.com/ws/geocoder/v1/?'  # 地址解析,地址转坐标
    base = "http://apis.map.qq.com/ws/place/v1/search?" + \
           "boundary=region(武汉,0)&keyword=酒店&page_size=20&page_index=1&orderby=_distance&key=" + \
           developer_key  # 腾讯地图地点搜索
    response = requests.get(base, parameters)
    response.encoding = 'utf-8'
    answer = response.json()
    print(answer['data'][0]['category'])
Post请求方式
# -*- encoding=utf-8 -*-
import time
import requests

developer_key = 'your key'  // 这里为你申请的开发者key
# Post请求测试
def address_coordinate_post_request(address):
    parameters = {'address': address, 'key': developer_key}
    base = "http://apis.map.qq.com/ws/geocoder/v1/?"
    response = requests.get(base, parameters)
    answer = response.json()
    print(answer['result']['location'])

Case演示

我们来看下具体的示例

if __name__ == '__main__':
    start = time.time()
    print("Start: " + str(start))
    print('广东省广州市天河区天河路600号')
    address_coordinate_get_request('39.984154,116.307490')
    address_coordinate_post_request("广东省广州市天河区天河路600号")

    stop = time.time()
    print("Stop: " + str(stop))
    print(str(stop - start) + "秒")

结果如下

Start: 1553160605.62
广东省广州市天河区天河路600号
酒店宾馆:星级酒店
{u'lat': 23.13514, u'lng': 113.34147}
Stop: 1553160606.0
0.378000020981
### 使用Python脚本向腾讯文档API写入数据 为了使用 Python 向腾讯文档 API 写入数据,首先需要获取访问权限并安装必要的库。通常情况下,这涉及到创建应用、获得密钥以及理解腾讯文档 API 的具体端点。 #### 安装依赖包 在开始之前,确保已经安装了 `requests` 库来处理 HTTP 请求: ```bash pip install requests ``` #### 获取认证凭证 按照腾讯云开发者指南中的指示注册账号并创建项目以取得 SecretId 和 SecretKey。这些信息用于构建签名字符串以便于安全地调用 API 接口[^2]。 #### 构建请求头与参数 当准备发送 POST 请求给腾讯文档服务时,除了常规的数据外还需要附加特定格式的头部信息如 Content-Type 及 Authorization 字段。Authorization 需要根据官方提供的算法计算得出。 #### 发送POST请求示例代码 下面是一个简单的例子展示如何利用 Python 将内容上传至腾讯文档: ```python import hashlib import hmac import base64 from datetime import datetime import requests def create_auth_header(secret_id, secret_key, host="docs.tencentcloudapi.com"): """ 创建授权头部 """ algorithm = "TC3-HMAC-SHA256" # 计算当前时间戳和日期 timestamp = int(datetime.now().timestamp()) date = datetime.utcnow().strftime('%Y-%m-%d') # 准备CanonicalRequest部分 http_method = "POST" canonical_uri = "/" canonical_querystring = "" canonical_headers = f"content-type:application/json\nhost:{host}\n" signed_headers = "content-type;host" payload_hash = hashlib.sha256(b'').hexdigest() canonical_request = '\n'.join([http_method, canonical_uri, canonical_querystring, canonical_headers, signed_headers, payload_hash]) credential_scope = f"{date}/tc3_request" hashed_request = hashlib.sha256(canonical_request.encode()).hexdigest() string_to_sign = "\n".join([ algorithm, str(timestamp), credential_scope, hashed_request ]) key_date = ("TC3" + secret_key).encode('utf8') sign_key = hmac.new(key=key_date, msg=date.encode(), digestmod=hashlib.sha256).digest() sign_service = hmac.new(sign_key, b'tc3_request', hashlib.sha256).digest() signature = hmac.new(sign_service, string_to_sign.encode(), hashlib.sha256).hexdigest() auth_header = (f'{algorithm} Credential={secret_id}/{credential_scope}, ' f'SignedHeaders={signed_headers}, Signature={signature}') return {"X-TC-Timestamp": str(timestamp), "Authorization": auth_header} if __name__ == "__main__": SECRET_ID = "<Your_Secret_Id>" SECRET_KEY = "<Your_Secret_Key>" url = "https://docs.tencentcloudapi.com/document/v20210922/CreateDocument" headers = { **create_auth_header(SECRET_ID, SECRET_KEY), 'Content-Type': 'application/json' } body = { "Title": "Test Document", "Body": "# Hello World!\nThis is a test document created via API." } resp = requests.post(url=url, json=body, headers=headers) print(f"Status Code: {resp.status_code}") print("Response Body:") print(resp.text) ``` 此段程序展示了怎样构造一个合法的身份验证头部,并通过 POST 方法提交 JSON 数据到指定 URL 地址。注意替换 `<Your_Secret_Id>` 和 `<Your_Secret_Key>` 为实际的应用凭证值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值