通过requests模块中的post请求爬取某翻译,实现翻译功能
代码以及注释如下
import requests # 导入requests模块
import json # 导入json模块
class King(object):
# 定义通过__init__方法定义初始化的参数
def __init__(self, word):
self.url = "https://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule" # post请求的网址
self.word = word # 需要翻译的数据
self.headers = { # 请求头中的参数
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36User - Agent: Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 100.0.4896.127Safari / 537.36",
"Referer": "https: // fanyi.youdao.com /"
}
self.post_data = { #post表单发送的数据
"i": word,
"from": "AUTO",
"to": "AUTO",
"smartresult": "dict",
"client": "fanyideskweb",
"salt": "16506796553499",
"sign": "287a1672a69c012dc2e2431fad88f355",
"lts": "1650679655349",
"bv": "ac3968199d18b7367b2479d1f4938ac2",
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"action": "FY_BY_CLICKBUTTION"
}
def get_data(self): # 定义方法用requests去访问目标地址并return返回的数据
response = requests.post(self.url, headers=self.headers, data=self.post_data)
# 默认返回bytes类型,除非确定外部调用使用str才进行解码操作
return response.content
def parse_data(self, data):
# 将json数据转换成python字典
dict_data = json.loads(data)
# 从字典中抽取翻译结果
print(dict_data['translateResult'][0][0]['tgt'])
def run(self):
# url
# headers
# post——data
# 发送请求
data = self.get_data()
# 解析
self.parse_data(data)
if __name__ == '__main__':
# king = King("人生苦短,及时行乐")
word = input("请输入想翻译的单词")
king = King(word)
king.run()
# python标准库有很多有用的方法,每天看一个标准库的使用
总结一下,大致分为:
1.定义__init__进行初始化,设置url等必须参数
2.定义get_data,函数内部通过requests对目标url进行访问,并且return返回访问的数据
3.定义parse_data函数,将get_data函数teturn返回的json数据,
通过json.loads转换成python字典的格式,在根据字典内容打印对应出翻译的结果