python如何提取跨域请求的jsonp数据
时间: 2024-10-14 08:03:13 浏览: 27
在Python中,如果你想要处理跨域请求并从JSONP(JSON with Padding)响应中提取数据,通常需要利用浏览器支持的同源策略的例外——JSONP。这是因为默认情况下,由于安全原因,浏览器不允许跨域发送XMLHttpRequest(XHR)请求。
以下是一个简单的例子说明如何使用Python的`requests`库来实现JSONP:
```python
import requests
# 假设你需要从这个JSONP服务获取数据
url = "http://example.com/api/data?callback=handleData"
# JSONP回调函数名,这里假设是handleData
def handle_data(data):
# 模拟实际的回调逻辑,这里的data通常是一个字符串形式的JSON嵌套在函数调用里
parsed_data = eval('{' + data.split('(')[1].split(')')[0] + '}')
print(parsed_data)
# 使用requests.get,并指定params参数包含回调函数名
response = requests.get(url, params={'callback': handle_data}, headers={'Content-Type': 'application/javascript'})
# response.text将包含处理过的JSONP内容,你可以从中解析数据
if response.status_code == 200:
json_data = handle_data(response.text)
else:
print(f"Request failed with status {response.status_code}")
```
在这个例子中,当你发送GET请求到URL时,服务器会返回类似于`handleData({"key": "value"})`的内容。`handle_data`函数会在接收到响应后自动运行,然后我们将字符串解析成真正的JSON对象。
阅读全文