破解百度翻译|5

破解百度翻译|5

文章目录

  • 破解百度翻译|5
    • 写在前面
    • 指定url及响应分析
    • 编码详情
    • 制作exe可执行文件
    • 写在后面

写在前面

你好,我是禅墨

转眼间就到了周五了,happy啊!

上篇文章我们做了一个简易得网页采集器,感觉没啥难度,那这次我们就再做一个没啥难度的东西,搞一下百度翻译,想了想,还是最后把程序打一下包,作为一个小工具使用!

指定url及响应分析

你看,爬虫第一步总是要指定URL,但是这个是需要我们在浏览器中寻找的。

  1. 打开浏览器(以Chrome为例)找到百度翻译首页,思考一下,首页会是我们要破解的内容吗?那我们需要获取的内容是哪些呢?不妨我们输入一个单词,比如说:cat,这时我们看一下页面上就会出现具体的内容。那红框线框出来的就是我们需要的内容。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传破解百度翻译|5_第1张图片

  2. 那我们如何找到这一部分内容呢,按下F12,找network,页面响应对应的XHR,这时会发现什么都没有,我们需要把刚刚的cat删掉,这时我们会在右边直接看到有两个sug,我们点开headers往下查找,会发现从上往下对应的分别是kw:ca,kw:c ,这是不是就是我们删除时留下的字母顺序,那说明我们要找的界面就是它吧。

    破解百度翻译|5_第2张图片

  3. 我们翻看到前面会发现,他的完整请求地址,以及类型为POST,说明这是一个带有参数的请求,参数是什么呢,是不是就是我们刚刚寻找到的kw啊

在这里插入图片描述

  1. 我们来复盘一下,针对这个请求地址,post请求每次多携带一个字符作为参数向服务器发送请求,直到组成我们需要翻译的单词,然后服务器会响应请求,做出回应数据。那么响应类型是什么呢?

  2. 我们会看到一个Response Headers,这就是响应的具体内容,Content-Type说明这时一个json响应。

破解百度翻译|5_第3张图片

编码详情

前面的准备工作我们已经做的很充分了,后面就是按照正常的顺序进行敲代码了,不清楚的可以回看这里

https://chanmoyun.gitee.io/2021/01/28/04.%E7%AE%80%E6%98%93%E7%BD%91%E9%A1%B5%E9%87%87%E9%9B%86/

在这里需要声明一点,我们之前使用的是text()获取响应数据的,但是对于json类型,我们需要用json()获取响应数据,返回的是obj类型。

源码及解析:

# -*- coding:utf-8 -*-
import json
import requests
if __name__ == '__main__':
    # 1-指定url
    post_url = 'https://fanyi.baidu.com/sug'
    # 2-进行UA伪装
    headers = {
     'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'}
    # 3-post请求参数处理(同get请求一致)
    word = input('Enter a word:')
    data = {
     'kw':word}
    # 4-请求发送
    response = requests.post(url=post_url,data=data,headers=headers)
    # 5-获取响应数据:json()方法返回的是obj(如果确认响应数据是json类型的,才能使用json())
    dic_obj = response.json()
    print(dic_obj)
    # 持久化存储
    filename = word+'.json'
    fp = open(filename,'w',encoding='utf-8')
    json.dump(dic_obj,fp=fp,ensure_ascii=False)
    print('OK!')

制作exe可执行文件

当我们想具体使用时,总不能每次都去打开编辑器运行吧,所以我们需要对程序进行打包,有很多方式,这里我们选择pyinstaller工具包

  1. 首先,打开工具包,我们直接输入命令,这样安装的就是在全局变量中

    pip install pyinstaller
    

    如果之前按照步骤更改过pip镜像源,安装起来就会非常快(文章环境安装部分https://chanmoyun.gitee.io/2021/01/27/03.Requests%E7%AC%AC%E4%B8%80%E8%A1%80/)

  2. 安装完成之后,我们可以在cmd中切换到想要打包的文件所在的文件夹下,但是如果使用的pycharm,直接点击下方的Terminal即可。

  3. 在打包之前,我们需要考虑,程序执行一次只能翻译一个,我们是不是需要给他写成死循环啊,然后我们之前定义的是有永久化存储的,现在也不需要了,所以我们的程序就可以改成:

    # -*- coding:utf-8 -*-
    import requests
    while(True):
        # 1-指定url
        post_url = 'https://fanyi.baidu.com/sug'
        # 2-进行UA伪装
        headers = {
           'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'}
        # 3-post请求参数处理(同get请求一致)
        word = input('Enter a word:')
        data = {
           'kw':word}
        # 4-请求发送
        response = requests.post(url=post_url,data=data,headers=headers)
        # 5-获取响应数据:json()方法返回的是obj(如果确认响应数据是json类型的,才能使用json())
        dic_obj = response.json()
        print(dic_obj)
    
  4. 那你想没想过,pyinstaller打包的是整个环境,如果你的当前环境有很多包,那是不是打包就会很慢,甚至会出现打包失败,就算会成功那也会生成很大的文件,那怎么办?有pycharm这么优秀的工具不能浪费啊,我们可以单独建一个虚拟环境,把py文件写在里面,里面只有需要的包,其他都不要,这样不就全部解决了。

  5. 接下来就正式打包了

    完整示例(不是本程序)

    pyinstaller -F -i tra.ico main.py -n Tra --noconsole
    
    功能 注释
    -F 打包成一个文件
    -D 打包成一个文件夹
    -n 重新命名
    –noconsole 去掉cmd
    -i 加入图标,需要转化为ico

    针对本程序,我们其实只需要输入简短命令就行

    pyinstaller -F Baidu-translation
    

写在后面

OK!这就是本篇文章全部内容了!

欢迎关注禅墨云,我们不见不散!

博客网站同步更新,网址:chanmoyun.gitee.io

破解百度翻译|5_第4张图片

你可能感兴趣的:(爬虫,Python,python,json,爬虫)