鱼C论坛

 找回密码
 立即注册
查看: 1581|回复: 4

[已解决]python爬虫爬有道翻译

[复制链接]
发表于 2020-6-28 17:44:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个代码现在是会了,但是代码是不能背的,需要理解,里面有一些东西我不理解,去百度了但是效果不好,想问一下鱼油们是怎么理解的,代码如下
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'][0][0]['tgt'])

data = urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url,data)

这两句话是干嘛的呢?查了好多资料都看不懂
最佳答案
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 的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-28 17:51:26 | 显示全部楼层
小甲鱼的铁粉 发表于 2020-6-28 17:50
如果想看一下data前后的变化的话把代码加个东西

然后输出为


%E6%88%91%E7%88%B1%E4%BD%A0  这个就是    我爱你    的 URL编码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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(),我没有打
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 07:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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