天行数据 api 接口数据搜索问题 -- Python 版本
2019/12/3
天行数据"垃圾分类" Python 版 api 接口问题。(Python 版本、中文字符)
- 天行数据提供 api 接口,利用这些可以做一些事情,比如做个Web端垃圾查询的功能。
- 以下是天行数据参考代码中 Python 的实例,不过很明显,这是 Python2 的例子。
# -*- coding: utf-8 -*-
import sys, urllib, urllib2, jsonurl = 'http://api.tianapi.com/txapi/lajifenlei/index?key=APIKEY&word=眼镜'req = urllib2.Request(url)resp = urllib2.urlopen(req)
content = resp.read()
if(content):print(content)
- 经过改写,Python3 版本如下:
import urllib.request
key = '************'
word = '手机'
url = "http://api.tianapi.com/txapi/lajifenlei/index?key={}&word={}".format(key, word)
req = urllib.request.urlopen(url)
content = req.read()
if(content):print(content)
Python3 中已没有 urllib2,只有 urllib,所以需要修改代码,导入包时,需要直接导入 request,但是代码出现错误,如下:
File "E:/PyCharmCode/pycharm_Code/01/garbage_sort.py", line 29, in <module>req = urllib.request.urlopen(url)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 50-51:ordinal not in range(128)
应该是 url 编码问题,猜测是中文字符"手机"的问题,将 word=“手机”,换成 word=‘iphone’,成功获取到结果。
虽然得到结果,确实是非中文字符,对 content 内容进行 utf-8 解码:content = req.read().decode(“utf-8”),得到中文结果。也确定了问题是 url 中含有中文,查看 Python 官网 3.7.5 版本的文档,提到:
"以百分比编码的ASCII文本字符串。
如果将结果字符串用作通过urlopen()函数进行POST操作的数据,则应将其编码为字节,否则将导致TypeError。"
原来是需要将 url 字符串转为百分比编码,原因是中文字符串无法编码成为 ascii 码。
所以我们只需要对中文进行百分号编码之后,就可以 encode 为 ascii 了。
Python3 中我们可以在 urllib.request 找到官方提供的与中文编码相关的函数:quote()。
- 最终代码如下:
import json
import urllib.requestkey = '************'
word = '手机'
word_quote = urllib.request.quote(word)
url = "http://api.tianapi.com/txapi/lajifenlei/index?key={}&word={}".format(key, word_quote)
req = urllib.request.urlopen(url)
content = req.read().decode("utf-8")
jsonResponse = json.loads(content) # 将数据转化为 json 格式
print(jsonResponse)
- 以上代码中key的值需要注册天行数据账号获取。
天行数据 api 接口数据搜索问题 -- Python 版本相关推荐
- 1688搜索新品API接口-(按关键字搜索新品数据API接口)
一.1688搜索新品API接口-(按关键字搜索新品数据API接口)代码如下: 1.公共参数: 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) secre ...
- 关键词搜索1688工厂数据API接口代码对接教程
关键词搜索1688工厂数据API接口代码对接教程如下: 1.公共参数 名称 类型 必须 描述(代码对接教程wx19970108018 Q1597063760) key String 是 调用key(必 ...
- 1688搜索工厂数据API接口-(item_search_factory-按关键字搜索工厂数据API接口)
一.1688搜索工厂数据API接口-(item_search_factory-按关键字搜索工厂数据API接口)代码对接如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key ...
- python 易盛行情_易盛信息9.0外盘期货行情数据API接口公共授权开发包例子代码...
易盛信息9.0外盘期货行情数据API接口公共授权开发包例子代码 怎么才能获取到外盘期货行情数据API接口呢?不少朋友就会考虑到易盛9.0行情API接口,本身易盛就是一个软件提供商,提供行情API接口也 ...
- 免费股票数据API接口
免费股票数据API接口提供沪深.香港.美国股市信息. 1.沪深股市 2.香港股市 3.美国股市 4.香港股市列表 5.美国股市列表 6.深圳股市列表 7.沪股列表 API文档:https://www. ...
- 酷狗音乐web端API接口数据
酷狗音乐web端API接口数据 发表于 2017-07-16 | 分类于 api 酷狗音乐web端API接口数据分析 酷狗音乐Web端音乐API接口数据整理,以下接口数据已整理封装在我的基于Node. ...
- 淘宝api接口数据和爬虫数据教程
淘宝api接口数据和爬虫数据教程如下: 1.公共参数 名称 类型 必须 描述(接口代码教程wx19970108018) key String 是 调用key(必须以GET方式拼接在URL中,点击获取请 ...
- 历年奥运比赛数据 API 接口
历年奥运比赛数据 API 接口 包含运动员以及奖牌数据,历年所有数据 / 多种查询条件. 1. 产品功能 自奥运举办以来历年的所有数据: 27 万全量数据: 多种查询条件便于多维度分析: 数据持续更新 ...
- 京东商品详情APP原数据API接口-(item_get_app-获得JD商品详情原数据API接口),京东API接口
一.京东商品详情APP原数据API接口-(item_get_app-获得JD商品详情原数据API接口),京东API接口代码如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用k ...
最新文章
- vscode中内置集成终端显示为git(bash.exe)
- window oracle 只有bak文件怎么恢复_一起来学习Oracle的备份恢复基础吧-4
- iPhone清理喇叭灰尘_iphone正确清理扬声器灰尘的方法
- 怎么在html页面和js里判断是否是IE浏览器
- 通过 Android SDK Manager 安装面向 Android* 模拟器插件的英特尔® 凌动™ x86 系统映像...
- 初学jQuery之选择器
- php json 转arraylist,从JSONArray转换为ArrayList CustomObject - Android
- python3—列表
- spacy实体关系抽取_使用spacy从Wikipedia文章中命名实体识别
- 欢迎扫码进群加入或关注ServiceComb社区
- 正则表达式 第一次碰到某个特定字符就返回
- 谷歌小恐龙-有网也能玩儿
- 云计算的认识和看法_对云计算的看法. 我对云计算的认识
- 服务器查询IPV6地址
- 机器人genghis_iRobot的智慧家居:从扫地机器人和擦地机器人的联动开始
- 32c语言编程,胸罩32C中的32和C是代表什么意思?
- 你需要启用steam社区界面功能以进行购买_Steam新版游戏库界面上线,筛选游戏功能更强大...
- 一个在线的文献计量分析工具(作者或文献间的联系可视化)
- 前端项目执行npm install错误
- 提笔忘字,亟须重视的电脑病
热门文章
- php74 骑士 火车头采集简历 接口及采集规则
- BeagleBone 机器人项目
- python 查看某个模块包含函数方法
- 一文学会Linux安装Mysql5.7(解压方式),加上配置详解,帮你完美避坑
- agx 安装ros opencv_基于paddledetection在ROS中搭建红绿灯检测控制车模运动(1)
- 阿路比I微型姿态传感器LPMS-BE-SM
- GPS卫星主要观测量
- 面向地块的NDWI_MEAN阈值分割旱田-水田
- C,C++网络编程实现图像实时传输
- 平安银行java爬虫面试_【中国平安银行信用卡中心java工程师面试】校招进来的,刷人还是蛮多的。-看准网...