练习爬取有道翻译时出现错误,求助
在学习小甲鱼的零基础入门python里的爬虫第二节,跟着小甲鱼练习了一下爬取有道翻译,程序如下:import urllib.request
import urllib.parse
url = 'https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
data = {}
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['i'] = content
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = '16479194564289'
data['sign'] = '1dd5674882aee0c529d9bb615fcb72c9'
data['lts'] = '1647919456428'
data['bv'] = '097b265c57844c587e0fd5b8ecb30a24'
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CLICKBUTTION'
data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url,data)
html = response.read()
print(html)
但程序报错为:b'{"errorCode":50}'
百度了一下,说是有道加入了反爬机制,但还是求大神解答一下是什么原因 本帖最后由 isdkz 于 2022-3-22 12:22 编辑
是因为接口不对,你可以看一下这个:https://blog.csdn.net/qq_44770178/article/details/112613422
你的代码改成这样:
import urllib.request
import urllib.parse
url = 'http://fanyi.youdao.com/translate'
data = content
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['i'] = 'hello'
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = '16479194564289'
data['sign'] = '1dd5674882aee0c529d9bb615fcb72c9'
data['lts'] = '1647919456428'
data['bv'] = '097b265c57844c587e0fd5b8ecb30a24'
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CLICKBUTTION'
data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url,data)
html = response.read()
print(html) 是因为你的接口不对,
你可以看一下这个:https://blog.csdn.net/qq_44770178/article/details/112613422 https://blog.csdn.net/qq_44770178/article/details/112613422 是因为你的接口不对,你的代码应该改成这样:
import urllib.request
import urllib.parse
url = 'http://fanyi.youdao.com/translate'
data = {}
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['i'] = content
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = '16479194564289'
data['sign'] = '1dd5674882aee0c529d9bb615fcb72c9'
data['lts'] = '1647919456428'
data['bv'] = '097b265c57844c587e0fd5b8ecb30a24'
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CLICKBUTTION'
data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url,data)
html = response.read()
print(html) 把地址去掉那个 "_o"
页:
[1]