小甲鱼爬虫课程 - 爬虫访问在线翻译
本帖最后由 allearn_Python 于 2020-12-17 14:26 编辑自己按照视频课程尝试用爬虫访问bing在线翻译时,得不到预期结果,求大佬指点迷津。
↑↑ 这是根据视频找到的URL
↑↑ 显示翻译没问题
↑↑ 这是DATA字典内容
根据视频课程我写了程序如下:
import urllib.request
import urllib.parse
import json
head = {}
head['Uers-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
url = "https://cn.bing.com/texamplev3?isVertical=1&&IG=E496D5184E5745EC8154364A8EDB9756&IID=translator.5025.2"
data = {}
data['from'] = 'zh-Hans'
data['to'] = 'en'
data['text'] = '你好中国'
data['translation'] = ''
data = urllib.parse.urlencode(data).encode('utf-8')
req = urllib.request.Request(url,data,head)
response = urllib.request.urlopen(req)
html = response.getcode()
print(html)
html = response.read().decode('utf-8')
print(html)
但运行结果是:
请问该怎么改正{:10_297:}
本帖最后由 小伤口 于 2020-12-17 14:35 编辑
data['translation'] = ''要把Hello China也得打上import urllib.request
import urllib.parse
import json
head = {}
head['Uers-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
url = "https://cn.bing.com/texamplev3?isVertical=1&&IG=E496D5184E5745EC8154364A8EDB9756&IID=translator.5025.2"
data = {}
data['from'] = 'zh-Hans'
data['to'] = 'en'
data['text'] = '你好中国'
data['translation'] = 'hello china'
data = urllib.parse.urlencode(data).encode('utf-8')
req = urllib.request.Request(url,data,head)
response = urllib.request.urlopen(req)
html = response.getcode()
html = response.read().decode('utf-8')
print(html)
==================== RESTART: C:/Users/ASUS/Desktop/嗨.py ====================
[{"normalizedSource":"你好中国","normalizedTarget":"hello china","examples":[]}]
>>>
多打了一个print(html) 小伤口 发表于 2020-12-17 14:29
data['translation'] = ''要把Hello China也得打上
多打了一个print(html)
import urllib.request
import urllib.parse
import json
content = input('请输入要翻译的内容:')
head = {}
head['Uers-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
url = "https://cn.bing.com/texamplev3?isVertical=1&&IG=E496D5184E5745EC8154364A8EDB9756&IID=translator.5025.2"
data = {}
data['from'] = 'zh-Hans'
data['to'] = 'en'
data['text'] = content
data['translation'] = 'hello china'
data = urllib.parse.urlencode(data).encode('utf-8')
req = urllib.request.Request(url,data,head)
response = urllib.request.urlopen(req)
html = response.getcode()
print(html)
html = response.read().decode('utf-8')
print(html)
但我想实现的是在线翻译,输入什么就翻译什么,
data['translation'] 里面给定值得话,一直就是这个值了 allearn_Python 发表于 2020-12-17 14:36
但我想实现的是在线翻译,输入什么就翻译什么,
data['translation'] 里面给定值得话,一直就是这 ...
你可以先设置一个a放在data['translation'] = a
上面再用a=input(‘.....’)(当然其他字母也可以)
这样就可以实现了 allearn_Python 发表于 2020-12-17 14:36
但我想实现的是在线翻译,输入什么就翻译什么,
data['translation'] 里面给定值得话,一直就是这 ...
import urllib.request
import urllib.parse
import json
i=0
print('输入0结束程序:')
while 1:
while True:
content=input('请输入需要翻译的内容:')
if content=='':
print('请重新输入:')
else:
break
if content=='0':
break
if i==0:
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
head={}
head['User-Agent']='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36'
data={}
data['i']=content
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['salt']='16079142839884'
data['sign']='7fa30595c70a9a765816fda28b64b9ac'
data['lts']='1607914283988'
data['bv']='4b9de992aa3d23c2999121d735e53f9c'
data['doctype']='json'
data['version']='2.1'
data['keyfrom']='fanyi.web'
data['action']='FY_BY_REALTlME'
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('翻译结果:%s'%(target['translateResult']["tgt"]))
可以参考一下我这个{:10_297:}
有帮助的话希望给个最佳{:10_297:} 小伤口 发表于 2020-12-17 14:38
你可以先设置一个a放在data['translation'] = a
上面再用a=input(‘.....’)(当然其他字母也可以)
这 ...
这个不对。
我的代码里面是:
content = input('请输入要翻译的内容:')
data['text'] = content
这个"text"才是对应要翻译的内容,而"translation"是翻译的结果。
我想要输入任意内容就能获得翻译结果,但现在的代码是如果我给定了"translation"的值,那翻译结果一直是这个值;如果我注释掉data['translation'] = 'xxx' 的话,就返回{"statusCode":400} 这样的错误 小伤口 发表于 2020-12-17 14:39
可以参考一下我这个
有帮助的话希望给个最佳
感谢{:10_297:}
我参考一下看我错在了哪里[捂脸] allearn_Python 发表于 2020-12-17 14:49
这个不对。
我的代码里面是:
content = input('请输入要翻译的内容:')
我发现了{:10_250:}
嗯,,,,,,我举得最好的办法就是换个翻译网站?{:10_250:} 小伤口 发表于 2020-12-17 15:09
我发现了
嗯,,,,,,我举得最好的办法就是换个翻译网站?
{:5_109:} bing的翻译好像有点复杂,还是有道的好理解哈哈哈哈,感谢 allearn_Python 发表于 2020-12-17 15:29
bing的翻译好像有点复杂,还是有道的好理解哈哈哈哈,感谢
我刚刚去试了一下bing,我也不会{:10_250:} allearn_Python 发表于 2020-12-17 15:29
bing的翻译好像有点复杂,还是有道的好理解哈哈哈哈,感谢
import requests
url = 'https://cn.bing.com/ttranslate?&category=&IG=C4A52C35D175427988E6510779DEFB5F&IID=translator.5036.8'
def translate_weiruan(info,fr='zh-CHS',to="en"):
print('翻译结果:'+requests.post(url,data={'text':info,'from':fr,'to':to,'doctype':'json'}).json()['translationResponse'])
def is_Chinese(str): #判断输入的内容是否是中文
for ch in str:
if '\u4e00' <= ch <= '\u9fff':
return True
else:
return False
def start_translate():
trans = input('翻译内容:')
if is_Chinese(trans): #实现自动判断,中英互译
translate_weiruan(trans)
else:
translate_weiruan(trans,fr='en',to='zh-CHS')
if __name__ == '__main__':
print(' 翻译结果由微软翻译提供!(请确保网络已连接)')
while True:
start_translate()
print('\n')
这是我网上找的代码不过是用requests模块你可以先安装试试参考一下 小伤口 发表于 2020-12-17 15:48
这是我网上找的代码不过是用requests模块你可以先安装试试参考一下
{:10_297:}好的,谢谢谢谢 小伤口 发表于 2020-12-17 14:39
可以参考一下我这个
有帮助的话希望给个最佳
输入0结束程序:
请输入需要翻译的内容:你好
Traceback (most recent call last):
File "D:/03-其他/个人/Training Course/翻译协调标准/dalao.py", line 45, in <module>
target=json.loads(html)
File "C:\Users\Allen\AppData\Local\Programs\Python\Python38\lib\json\__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "C:\Users\Allen\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\Allen\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
你给的参考程序刚开始运行还一切正常,后来再运行出现这个错误,请问能解决吗{:10_285:} 本帖最后由 小伤口 于 2020-12-17 17:20 编辑
allearn_Python 发表于 2020-12-17 17:08
你给的参考程序刚开始运行还一切正常,后来再运行出现这个错误,请问能解决吗
应该是偶然错误吧,一直都出现这个问题吗
毕竟不是每次都能成功的 小伤口 发表于 2020-12-17 17:19
应该是偶然错误吧,一直都出现这个问题吗
毕竟不是每次都能成功的
现在一直出现这个错误{:10_266:} allearn_Python 发表于 2020-12-17 17:23
现在一直出现这个错误
发一下你保存我的代码我看一看吧{:10_250:} 小伤口 发表于 2020-12-17 17:25
发一下你保存我的代码我看一看吧
import urllib.request
import urllib.parse
import json
i=0
print('输入0结束程序:')
while 1:
while True:
content=input('请输入需要翻译的内容:')
if content=='':
print('请重新输入:')
else:
break
if content=='0':
break
if i==0:
url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
head={}
head['User-Agent']='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36'
data={}
data['i']=content
data['from']='AUTO'
data['to']='AUTO'
data['smartresult']='dict'
data['client']='fanyideskweb'
data['salt']='16079142839884'
data['sign']='7fa30595c70a9a765816fda28b64b9ac'
data['lts']='1607914283988'
data['bv']='4b9de992aa3d23c2999121d735e53f9c'
data['doctype']='json'
data['version']='2.1'
data['keyfrom']='fanyi.web'
data['action']='FY_BY_REALTlME'
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('翻译结果:%s'%(target['translateResult']["tgt"]))
你看一下 Type "copyright", "credits" or "license()" for more information.
>>>
==================== RESTART: C:/Users/ASUS/Desktop/嗨.py ====================
输入0结束程序:
请输入需要翻译的内容:哈哈
翻译结果:Ha ha
请输入需要翻译的内容:我最帅
翻译结果:I am the most handsome
请输入需要翻译的内容:你最帅
翻译结果:You are the most handsome
请输入需要翻译的内容:
我运行没毛病欸{:10_250:} 还是有问题吗{:10_266:} 小伤口 发表于 2020-12-17 17:35
我运行没毛病欸
Python 3.8.0 (tags/v3.8.0:fa919fd, Oct 14 2019, 19:37:50) on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
============= RESTART: D:/03-其他/个人/Training Course/翻译协调标准/xin_1.py =============
输入0结束程序:
请输入需要翻译的内容:重新试一下
Traceback (most recent call last):
File "D:/03-其他/个人/Training Course/翻译协调标准/xin_1.py", line 45, in <module>
target=json.loads(html)
File "C:\Users\Allen\AppData\Local\Programs\Python\Python38\lib\json\__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "C:\Users\Allen\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\Allen\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
>>>
{:10_285:}可能是我不够帅哈哈哈哈哈 哎,这随便哪里蹦出个小问题我就不会了
还是感谢你
页:
[1]
2