2019/12/3

天行数据"垃圾分类" Python 版 api 接口问题。(Python 版本、中文字符)

  1. 天行数据提供 api 接口,利用这些可以做一些事情,比如做个Web端垃圾查询的功能。
  2. 以下是天行数据参考代码中 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)

  1. 经过改写,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()。


  1. 最终代码如下:
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)

  1. 以上代码中key的值需要注册天行数据账号获取。

天行数据 api 接口数据搜索问题 -- Python 版本相关推荐

  1. 1688搜索新品API接口-(按关键字搜索新品数据API接口)

    一.1688搜索新品API接口-(按关键字搜索新品数据API接口)代码如下: 1.公共参数: 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) secre ...

  2. 关键词搜索1688工厂数据API接口代码对接教程

    关键词搜索1688工厂数据API接口代码对接教程如下: 1.公共参数 名称 类型 必须 描述(代码对接教程wx19970108018 Q1597063760) key String 是 调用key(必 ...

  3. 1688搜索工厂数据API接口-(item_search_factory-按关键字搜索工厂数据API接口)

    一.1688搜索工厂数据API接口-(item_search_factory-按关键字搜索工厂数据API接口)代码对接如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key ...

  4. python 易盛行情_易盛信息9.0外盘期货行情数据API接口公共授权开发包例子代码...

    易盛信息9.0外盘期货行情数据API接口公共授权开发包例子代码 怎么才能获取到外盘期货行情数据API接口呢?不少朋友就会考虑到易盛9.0行情API接口,本身易盛就是一个软件提供商,提供行情API接口也 ...

  5. 免费股票数据API接口

    免费股票数据API接口提供沪深.香港.美国股市信息. 1.沪深股市 2.香港股市 3.美国股市 4.香港股市列表 5.美国股市列表 6.深圳股市列表 7.沪股列表 API文档:https://www. ...

  6. 酷狗音乐web端API接口数据

    酷狗音乐web端API接口数据 发表于 2017-07-16 | 分类于 api 酷狗音乐web端API接口数据分析 酷狗音乐Web端音乐API接口数据整理,以下接口数据已整理封装在我的基于Node. ...

  7. 淘宝api接口数据和爬虫数据教程

    淘宝api接口数据和爬虫数据教程如下: 1.公共参数 名称 类型 必须 描述(接口代码教程wx19970108018) key String 是 调用key(必须以GET方式拼接在URL中,点击获取请 ...

  8. 历年奥运比赛数据 API 接口

    历年奥运比赛数据 API 接口 包含运动员以及奖牌数据,历年所有数据 / 多种查询条件. 1. 产品功能 自奥运举办以来历年的所有数据: 27 万全量数据: 多种查询条件便于多维度分析: 数据持续更新 ...

  9. 京东商品详情APP原数据API接口-(item_get_app-获得JD商品详情原数据API接口),京东API接口

    一.京东商品详情APP原数据API接口-(item_get_app-获得JD商品详情原数据API接口),京东API接口代码如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用k ...

最新文章

  1. vscode中内置集成终端显示为git(bash.exe)
  2. window oracle 只有bak文件怎么恢复_一起来学习Oracle的备份恢复基础吧-4
  3. iPhone清理喇叭灰尘_iphone正确清理扬声器灰尘的方法
  4. 怎么在html页面和js里判断是否是IE浏览器
  5. 通过 Android SDK Manager 安装面向 Android* 模拟器插件的英特尔® 凌动™ x86 系统映像...
  6. 初学jQuery之选择器
  7. php json 转arraylist,从JSONArray转换为ArrayList CustomObject - Android
  8. python3—列表
  9. spacy实体关系抽取_使用spacy从Wikipedia文章中命名实体识别
  10. 欢迎扫码进群加入或关注ServiceComb社区
  11. 正则表达式 第一次碰到某个特定字符就返回
  12. 谷歌小恐龙-有网也能玩儿
  13. 云计算的认识和看法_对云计算的看法. 我对云计算的认识
  14. 服务器查询IPV6地址
  15. 机器人genghis_iRobot的智慧家居:从扫地机器人和擦地机器人的联动开始
  16. 32c语言编程,胸罩32C中的32和C是代表什么意思?
  17. 你需要启用steam社区界面功能以进行购买_Steam新版游戏库界面上线,筛选游戏功能更强大...
  18. 一个在线的文献计量分析工具(作者或文献间的联系可视化)
  19. 前端项目执行npm install错误
  20. 提笔忘字,亟须重视的电脑病

热门文章

  1. php74 骑士 火车头采集简历 接口及采集规则
  2. BeagleBone 机器人项目
  3. python 查看某个模块包含函数方法
  4. 一文学会Linux安装Mysql5.7(解压方式),加上配置详解,帮你完美避坑
  5. agx 安装ros opencv_基于paddledetection在ROS中搭建红绿灯检测控制车模运动(1)
  6. 阿路比I微型姿态传感器LPMS-BE-SM
  7. GPS卫星主要观测量
  8. 面向地块的NDWI_MEAN阈值分割旱田-水田
  9. C,C++网络编程实现图像实时传输
  10. 平安银行java爬虫面试_【中国平安银行信用卡中心java工程师面试】校招进来的,刷人还是蛮多的。-看准网...