泠然79 2019-01-23 16:36 采纳率: 0%
浏览 841

JSONDecodeError爬虫有道翻译

新人求问啊啊啊啊啊~~~~下面是我的代码

import urllib.request
import urllib.parse
import json

content=input("请输入需要翻译内容:")
url="http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"#?前面有个_o去掉才能正常使用 why?
data={}
data["i"]: content
data["type"]: "AUTO"
data["smartresult"]: "dict"
data["client"]: "fanyideskweb"
data["salt"]: "15482158645682"
data["sign"]: "91cbd7628c2de9065132acf3b88da8cd"
data["doctype"]: "json"
data["version"]: "2.1"
data["keyfrom"]: "fanyi.web"
data["action"]: "FY_BY_REALTIME"
data["typoResult"]: "true"

data=urllib.parse.urlencode(data).encode("utf-8")
response=urllib.request.urlopen(url,data)
html=response.read().decode("utf-8")
target=json.loads(html)
print("翻译结果是:%s"%(target["translateResult"][0][0]["tgt"]))


运行后的结果是
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\1.23.3.py", line 23, in
target=json.loads(html)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\json__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32\lib\json\decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
不知道该怎么改 求问大神

  • 写回答

1条回答 默认 最新

  • Watch_dou 2019-01-24 13:08
    关注
    
    >>> import urllib.request
    >>> import urllib.parse
    >>> import json
    
    >>> content=input("请输入需要翻译内容:")
    请输入需要翻译内容:你好!我是豆子,你是谁?
    >>> url="http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"#?前面有个_o去掉才能正常使用 why?
    >>> data={}
    >>> data["i"]= content
    >>> data["type"]= "AUTO"
    >>> data["smartresult"]= "dict"
    >>> data["client"]= "fanyideskweb"
    >>> data["salt"]= "15482158645682"
    >>> data["sign"]= "91cbd7628c2de9065132acf3b88da8cd"
    >>> data["doctype"]= "json"
    >>> data["version"]= "2.1"
    >>> data["keyfrom"]= "fanyi.web"
    >>> data["action"]= "FY_BY_REALTIME"
    >>> data["typoResult"]= "true"
    >>>
    >>> data=urllib.parse.urlencode(data).encode("utf-8")
    >>> response=urllib.request.urlopen(url,data)
    >>> html=response.read().decode("utf-8")
    >>> target=json.loads(html)
    >>> print("翻译结果是:%s%s"%(target["translateResult"][0][0]["tgt"], target["translateResult"][0][-1]["tgt"]))
    翻译结果是:Hello!I am a beans, who are you?
    
    

    最后一行,可以改一下,改一下中间啥的也行,使其输出不根据句号划分为不同的片段。

    评论

报告相同问题?

悬赏问题

  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?
  • ¥50 invest生境质量模块