python翻译爬虫_用爬虫实现翻译

今天我们来写一个可以自动翻译词语的脚本,其原理就是用python来模拟浏览器访问百度翻译,下面来分析一下原网页百度翻译

当我们输入词语时,导航栏不变化、网页不刷新就会自动显示翻译结果

由此我们可以推测该过程浏览器进行了一次Ajax请求,下面来分析具体分析一下请求过程:

按F12进入开发者模式

重新输入词语并观察网页请求,

当我们一个一个去观察请求时,发现该请求即为我们所要的结果:

查看该响应的请求头:

提交的表单为{‘kw’:花} (花是我们要查询的词语)

那么我们用爬虫来实现这一过程:

user-agent

代码如下

import requests # 导入requests模块

import pprint #导入pprint ,可以美化输出,也可以用print

url = 'https://fanyi.baidu.com/sug' #请求url

# 构造头部信息,该信息可以将我们的脚本伪装成浏览器访问

headers={

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36',

}

#提交的表单数据,我们假设要查的词语是 花

data={'kw':'花'}

# 开始请求,为POST请求

response=requests.post(url=url,headers=headers,data=data)

#打印响应内容

if response.status_code==200:

pprint.pprint(response.json())

响应结果如下:

观察输出结果可以发现输出结果为字典格式。键(key)为data,值(value)为列表,而列表的每一个元素又是一个字典,键'k'对应的是我们要查询的词语,‘v'对应的是查询结果,但结果中有方括号括起来的拼音,这一部分是我们不需要的,下面我们对结果进行提取:

import requests # 导入requests模块

import pprint #导入pprint ,可以美化输出,也可以用print

#确定字符串中括号的下表

def find_kuohao(string):

string=list(string)

count=0

if ']' in string:

for item in string:

if item == ']':

break

else:

count=count+1

return count

else:

return count

#去除结果中的拼音

def remove_pingyin(string):

num=find_kuohao(string=string)

return string[num+1:]

url = 'https://fanyi.baidu.com/sug' #请求url

# 构造头部信息,该信息可以将我们的脚本伪装成浏览器访问

headers={

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36',

}

#提交的表单数据,我们假设要查的词语是 花

data={'kw':'花'}

# 开始请求,为POST请求

response=requests.post(url=url,headers=headers,data=data)

#打印响应内容

if response.status_code==200:

result=response.json()

translation = result['data'][0]

submit = translation['k']

receive = translation['v'].split(';')

print('您查询的词语是:', submit)

print('查询结果是:')

for i in receive:

if i is not '':

res = remove_pingyin(i)

print(res)

运行结果如下:

我们再次对代码进行改进,使得它可以进行连续查词,并且可以随时进行退出:改进结果如下:

import requests

def find_kuohao(string):

string=list(string)

count=0

if ']' in string:

for item in string:

if item == ']':

break

else:

count=count+1

return count

else:

return count

def remove_pingyin(string):

num=find_kuohao(string=string)

return string[num+1:]

if __name__=="__main__":

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36',

}

url = 'https://fanyi.baidu.com/sug'

while True:

word=input('请输入要查询的单词,结束查询按q\n')

if word is 'q':

print('谢谢查询!')

break

else:

data={'kw':word}

response = requests.post(url=url, headers=headers, data=data)

result = response.json()

try:

translation = result['data'][0]

submit = translation['k']

receive = translation['v'].split(';')

print('您查询的词语是:', submit)

print('查询结果是:')

for i in receive:

if i is not '':

res = remove_pingyin(i)

print(res)

except:

print('查询无果,请核对后再试。。。。')

运行一下:

(工具:python3.7.4+Pycharm2019.2)

代码截止2020.2.2运行无误!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值