08利用python爬虫技术写个命令行翻译小工具

先上图演示下效果

演示效果.png

很实用的小工具,下面看实现这一过程的具体思路

一、通过分析百度翻译页面找出真正的翻译提交数据的网址

1、打开百度翻译页面,输入想要翻译的内容如下图

08利用python爬虫技术写个命令行翻译小工具_第1张图片
百度翻译页面.png

2、打开开发者工具,点击network,清空文件,如图

08利用python爬虫技术写个命令行翻译小工具_第2张图片
情况文件.png

3、重新点击翻译按钮,发起请求,在network中分析文件的内容,找出真正的提交数据的网址,以及所要提交数据的类型及内容。如图

08利用python爬虫技术写个命令行翻译小工具_第3张图片
抓取到的文件.png

如图,有三个文件,从文件的名字来看,第一个语言检测,第二个翻译的接口,然后再次发送请求验证这一猜想。那么可以确定我们要翻译的内容是发送到翻译接口这个网址,然后把翻译的结果返回,由此就可以找到,post请求所要发给翻译接口的数据,翻译接口的网址,以及返回来的数据。

08利用python爬虫技术写个命令行翻译小工具_第4张图片
翻译接口url.png
08利用python爬虫技术写个命令行翻译小工具_第5张图片
提交给翻译接口的数据.png
08利用python爬虫技术写个命令行翻译小工具_第6张图片
翻译接口返回的数据.png

返回来的数据是个json,把这个数据复制粘贴到在线json解析软件中分析我们所要提取的数据

08利用python爬虫技术写个命令行翻译小工具_第7张图片
json解析工具解析之后.png

由此,便找到了我们所要提取的数据,下面用代码实现。

# coding=utf-8
import requests
import json
import sys


class BaiduFanyi:
    def __init__(self, query_string):
        # 1.构造翻译url
        self.trans_url = 'http://fanyi.baidu.com/v2transapi'
        self.query_string = query_string
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) \
            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"
        }

    # 2.post data
    def get_post_data(self):
        post_data = {
            "from": "zh",
            "to": "en",
            "query": self.query_string,
            "transtype": "translang",
            "simple_means_flag": "3"
        }
        return post_data

    # 3.发起请求,获取响应
    def parse_url(self, post_data, url):
        response = requests.post(url, data=post_data, headers=self.headers,)
        return response.content.decode()

    # 4.提取数据
    def get_trans_ret(self, json_response):
        dict_response = json.loads(json_response)
        # ret = dict_response['trans_result']['data'][0]['dst']
        ret = dict_response["trans_result"]["data"][0]["dst"]
        print(ret)

    def run(self):
        # 1.构造url
        # 2.post data
        post_data = self.get_post_data()
        # 3.发送请求,获取响应
        json_response = self.parse_url(post_data, self.trans_url)
        # 4.提取数据
        self.get_trans_ret(json_response)

if __name__ == '__main__':
    query_string = sys.argv[1]  # 获取用户输入的要翻译的内容
    fanyi = BaiduFanyi(query_string)
    fanyi.run()

运行结果如下:


运行结果.png

还没有达到之前的效果,下面修改home目录下的.bashrc配置文件


找到.bashrc文件.png

修改配置文件,添加如图箭头所示到最后一行


修改配置文件.png

保存配置文件并退出

输入如下命令使修改后的配置文件生效

source .bashrc

接下来用新的命令运行程序

演示效果.png

至此,完美结束!

关于sys.argv的用法请点击此处链接

你可能感兴趣的:(08利用python爬虫技术写个命令行翻译小工具)