小甲鱼的铁粉 发表于 2020-6-28 17:44:50

python爬虫爬有道翻译

这个代码现在是会了,但是代码是不能背的,需要理解,里面有一些东西我不理解,去百度了但是效果不好,想问一下鱼油们是怎么理解的,代码如下

import urllib.request
import urllib.parse
import json

temp = input("请输入要翻译的文本")
url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'

data = {}
data['i'] =temp
data['client'] = 'fanyideskweb'
data['salt'] = '15933351272349'
data['sign'] = 'a356b81cb4cdfcc7d308e573bc271fcc'
data['ts'] = '1593335127234'
data['bv'] = '043c9b8297522e9a37a779af14b3350c'
data['doctype'] = 'json'
data['version'] ='2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] ='FY_BY_REALTlME'
data = urllib.parse.urlencode(data).encode('utf-8')

response = urllib.request.urlopen(url,data)
html = response.read().decode('utf-8')

result = json.loads(html)
print(result['translateResult']['tgt'])


data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url,data)
这两句话是干嘛的呢?查了好多资料都看不懂{:10_257:}

Twilight6 发表于 2020-6-28 17:50:03

urllib.parse.urlencode(data)这个是将字符串 URL 编码,而后面加 encode('utf-8') 是把URL编码转为 utf-8编码

urllib.request.urlopen(url,data)这个就是请求网站嘛,但是我记得 data 不能填这,要通过 urllib.request.Request() 填在这里面 然后传给 urlopen 的

小甲鱼的铁粉 发表于 2020-6-28 17:50:06

如果想看一下data前后的变化的话把代码加个东西
data['action'] ='FY_BY_REALTlME'
print("原来的data是",data)
data = urllib.parse.urlencode(data).encode('utf-8')
print("现在的data是",data)
然后输出为
原来的data是 {'i': '我爱你', 'client': 'fanyideskweb', 'salt': '15933351272349', 'sign': 'a356b81cb4cdfcc7d308e573bc271fcc', 'ts': '1593335127234', 'bv': '043c9b8297522e9a37a779af14b3350c', 'doctype': 'json', 'version': '2.1', 'keyfrom': 'fanyi.web', 'action': 'FY_BY_REALTlME'}
现在的data是 b'i=%E6%88%91%E7%88%B1%E4%BD%A0&client=fanyideskweb&salt=15933351272349&sign=a356b81cb4cdfcc7d308e573bc271fcc&ts=1593335127234&bv=043c9b8297522e9a37a779af14b3350c&doctype=json&version=2.1&keyfrom=fanyi.web&action=FY_BY_REALTlME'

Twilight6 发表于 2020-6-28 17:51:26

小甲鱼的铁粉 发表于 2020-6-28 17:50
如果想看一下data前后的变化的话把代码加个东西

然后输出为


%E6%88%91%E7%88%B1%E4%BD%A0这个就是    我爱你    的 URL编码

小甲鱼的铁粉 发表于 2020-6-28 17:52:14

Twilight6 发表于 2020-6-28 17:50
urllib.parse.urlencode(data)这个是将字符串 URL 编码,而后面加 encode('utf-8') 是把URL编码转为 utf- ...

对对对,源代码有urllib.request.Request(),我没有打
页: [1]
查看完整版本: python爬虫爬有道翻译