鱼C论坛

 找回密码
 立即注册
查看: 5521|回复: 10

爬虫入门,百度翻译 response 出错

[复制链接]
发表于 2016-3-6 23:59:28 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 zooo 于 2016-3-7 00:12 编辑

模仿鱼哥的程序写的,翻译的结果是在 v2transapi 中可以找到,按照下图填的字典,然而返回的html是一大串例句之类的无关东西,正确的翻译结果没有显示
捕获.PNG
我的程序:
  1. import urllib.request
  2. import urllib.parse
  3. import json
  4. content = input("请输入需要翻译的内容:")
  5. url = 'http://fanyi.baidu.com/v2transapi'
  6. data = {'from':'en',
  7. 'to':'zh',
  8. 'query':content,
  9. 'transtype':'trans',
  10. 'simple_means_flag':'3'}
  11. data = urllib.parse.urlencode(data).encode('utf-8')
  12. response = urllib.request.urlopen(url, data)
  13. html = response.read().decode('utf-8')
  14. print(len(html))
  15. print(html)
  16. #target = json.loads(html)
  17. #print("翻译结果:%s" % (target['translateResult'][0][0]['tgt']))
复制代码

鱼哥的程序:
  1. import urllib.request
  2. import urllib.parse
  3. import json
  4. while True:
  5.     content = input("请输入需要翻译的内容:")
  6.     url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=http://www.youdao.com/"
  7.     data = {}
  8.     data['type'] = 'AUTO'
  9.     data['i'] = content
  10.     data['doctype'] = 'json'
  11.     data['xmlVersion'] = '1.6'
  12.     data['keyfrom'] = 'fanyi.web'
  13.     data['ue'] = 'UTF-8'
  14.     data['typoResult'] = 'true'
  15.     data = urllib.parse.urlencode(data).encode('utf-8')

  16.     response = urllib.request.urlopen(url, data)
  17.     html = response.read().decode('utf-8')
  18.     target = json.loads(html)
  19.     print("翻译结果:%s" % (target['translateResult'][0][0]['tgt']))
复制代码


还不太清楚原因,求各位鱼油指导

最佳答案

查看完整内容

不同网站的json数据格式不一样, 你的17行需要按照百度的格式修改, 我大概看了一下, 改成这样 你可以先print原始target看看格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-6 23:59:29 | 显示全部楼层
不同网站的json数据格式不一样, 你的17行需要按照百度的格式修改, 我大概看了一下, 改成这样
  1. print(target['trans_result']['data'][0]['dst'])
复制代码

你可以先print原始target看看格式
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-3-7 13:01:15 | 显示全部楼层
hldh214 发表于 2016-3-7 12:33
不同网站的json数据格式不一样, 你的17行需要按照百度的格式修改, 我大概看了一下, 改成这样
你可以先prin ...

懂了,可以直接通过审查元素里的 response 找到键值,然后直接索引
1.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-21 15:42:56 | 显示全部楼层
我现在爬百度翻译都是这个结果,{'msg': 'ARG_NULL', 'error': 8}
我是被屏蔽了吗。。。。。
2017-9-21
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-24 21:49:06 | 显示全部楼层
import urllib.request
import urllib.parse
url="http://fanyi.baidu.com/v2transapi"
data={}
data["from"]="en"
data["to"]="zh"
data["query"]="I love you"
data["transtype"]="translang"
data["simple_means_flag"]=3
data["ue"]="UTF-8"
data=urllib.parse.urlencode(data).encode("utf-8")
req=urllib.request.Request(url,data)
head_add={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari"}
head_add={"Referer":"http://fanyi.baidu.com/"}
response=urllib.request.urlopen(req)
html=response.read().decode("utf-8")
print(html)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-24 21:49:50 | 显示全部楼层
徐延钊 发表于 2018-3-24 21:49
import urllib.request
import urllib.parse
url="http://fanyi.baidu.com/v2transapi"

哪位大神帮我指点一下,爬百度翻译为什么总是报错{“error”:“997”}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-29 20:28:55 | 显示全部楼层
结局了吗?我也是这样子的啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-29 20:29:30 | 显示全部楼层
解决了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-29 22:21:21 | 显示全部楼层
结局啦~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-29 22:22:03 | 显示全部楼层
徐延钊 发表于 2018-3-24 21:49
哪位大神帮我指点一下,爬百度翻译为什么总是报错{“error”:“997”}

import urllib.request
import urllib.parse
import json

# 百度实时翻译的接口,只能翻译英语到汉语
#百度翻译审查元素中原网址为:http://fanyi.baidu.com/v2transapi,在此需要改为:http://fanyi.baidu.com/transapi
url = 'http://fanyi.baidu.com/transapi'
content = input("请输入待翻译内容:")
head = {}
head['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
data = {}
# 默认是:英语 -> 汉语,若要实现:汉语->英语,则将'from'和'to'的值对调即可,也即:zh和en对调
data['from'] = 'zh'
data['to'] = 'en'
data['query'] = content
data['transtype'] = 'translang'
data['simple_means_flag'] = '3'
data['sign'] = '127170.332787'
data['token'] = '082414939c81a68badde6faf2191d261'
data = urllib.parse.urlencode(data).encode('utf-8')

req = urllib.request.Request(url, data, head)
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8')
target = json.loads(html)
#print(target)
print("翻译结果: %s" % (target['data'][0]['dst']))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-12-1 18:41:49 | 显示全部楼层
百度不能直接爬……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 01:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表