python翻译爬虫_python 翻译爬虫

1 importurllib.request2 importurllib.parse3 importjson4 while 1:5

6 content=input("请输入要翻译的内容:")7 url="http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=https://www.baidu.com/link"

8 data={}9 data['type']='AUTO'

10 data['i']=content11 data['doctype']='json'

12 data['keyfrom']='fanyi.web'

13 data['ue']='UTF-8'

14 data['typoResult']='true'

15 data=urllib.parse.urlencode(data).encode('utf-8') #urlencode()主要作用就是将url附上要提交的数据。

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']))

这是form Data中的内容

i:

你好

from:

AUTO

to:

AUTO

smartresult:

dict

client:

fanyideskweb

salt:

1497075070071

sign:

fbdf42a5b8f48f0defc722823ef1be6b

doctype:

json

version:

2.1

keyfrom:

fanyi.web

action:

FY_BY_CLICKBUTTON

typoResult:

true

进行分析,首先引入三个模块,

首先找到网页版有道词典的在线翻译打开检查,找到network,随便翻译一段话,打开产生的数据,

找到在Headers下的form Data表

我们要解决,如何用python进行POst表单提交:这里urlopen函数有一个data参数,如果我们给这个参数赋值,那么请求就是POST方式

如果data没有赋值HTTP请求就是GET方式

在python3的文档里,告诉我们要使用data这个参数,就必须要用urllib.request.urlopen()将其转换为某种格式

step:

我们首先要将data表单的内容进行赋值,不难发现,我们提交的要翻译的内容是通过表单中“i”这一项来传递的。

然后对data进行赋值,注意格式也要转换,并且使用“utf-8”解码

下面利用urllib.request.urlopen()来打开url,并且使用第二参数,将data提交

得到的html页面

由于数据交换使用json传输,这里我们用json.loads()解码,并且将值赋给target

target的值其实是一个字典,

{'smartResult': {'entries': ['', 'hello;hi'], 'type': 1}, 'translateResult': [[{'tgt': 'How are you', 'src': '你好'}]], 'elapsedTime': 1, 'errorCode': 0, 'type': 'ZH_CN2EN'}

字典的操作忘了吗,复习一遍吧:

>>>target={'smartResult': {'entries': ['', 'hello;hi'], 'type': 1}, 'translateResult': [[{'tgt': 'How are you', 'src': '你好'}]], 'elapsedTime': 1, 'errorCode': 0, 'type': 'ZH_CN2EN'}

>>>print(target['translateResult']

[[{'tgt': 'How are you', 'src': '你好'}]]

>>>print(target['translateResult'][0][0]['tgt'])

How are you

over!

(伪造表单,打开页面提交表单,获得返回response,从response中提取结果)

知识点:

1,data=urllib.parse.urlencode(data)

2,response=urllib.request.urlopen(url,data) urlopen第二参数打开url,提交form data

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值