超简单爬虫使用requests模块+有道云翻译,python实现

2020-08-17  本文已影响0人  copymaker

前言

最近隔壁小张找到我

"老王,最近我在学英语,不想想再打开网页翻译了,太麻烦了一直要开着网页"

"那你可以下载客户端吗,不是挺方便的嘛?"

"老王,我家电脑你又不是不知道,本来就是老款,这么多软件开着不是卡升天了?"

"那行,超简单利用python的requests模块利用网易有道云制作一个翻译小功能"

什么不想打开网页翻译 靓仔用requests模块啊

准备

搞快点

  1. 需要在有道翻译中查找我们爬虫所需要的url以及post表单

    1. 打开有道云词典翻译网页,F12进入开发者模式,点击NetworkXHR

    2. 输入小张学习资料并点击翻译,查看此时发现一条有请求


      获取url和post表单1
    3. 点击请求,右侧会弹出菜单栏,我们重点就看Headers以及Preview

      image-20200817000423493
    4. 先点击Headers查看.

      • General中的RequestURL就是我们需要的待请求url
      • 下拉后可以看到Form Data中的所有数据就是我们需要的post表单
      url post表单
      • 由此我们获得了

        url:
        http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
        post表单:
        i: 日本经典动作片
        from: AUTO
        to: AUTO
        smartresult: dict
        client: fanyideskweb
        salt: 15975896029404
        sign: af9c79eff66d919c9ed6f1a526781fca
        lts: 1597589602940
        bv: 9ef72dd6d1b2c04a72be6b706029503a
        doctype: json
        version: 2.1
        keyfrom: fanyi.web
        action: FY_BY_REALTlME
        
  1. 接下来看Preview,这是网页返回的json格式数据这其中就包含了我们需要的翻译,可以简单的理解为字典,但是需要用json模块来解码.

    • 有道云返回的json格式是词典嵌套列表的这样一个格式

    • 那么从这里面我们可以得到所需要的翻译在返回的词典中是这样的一个位置

      trans_dict["translateResult"][0][0]["tgt"]
      
    Preview
  2. 接下来就是代码环节了想想我们的流程

    • 使用input输入需要翻译的文本
    • 提交post请求到url
    • 接受返回的json数据
    • 解析json数据提取出翻译结果
    • 打印翻译结果
    • 外面套一个循环以及加上退出选项
    import json
    import requests
    
    
    # 7.循环
    while True:
    
        # 1.控制台获取等待翻译文本
        content=input("输入中文:")
    
        # 8.退出
        if content == "":
            print("输个什么玩意?爷退了")
            exit()
    
        # 2.设定待请求url
        # 有道云坏的很加了个_o防止爬虫
        # url="http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
        url="http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
    
        # 3.建立post表单
        post_form={
        "i": content,
        "from": "AUTO",
        "to": "AUTO",
        "smartresult": "dict",
        "client": "fanyideskweb",
        "salt": "15975710195066",
        "sign": "1c7317b4699d018e5ae031c0077d7b80",
        "lts": "1597571019506",
        "bv": "9ef72dd6d1b2c04a72be6b706029503a",
        "doctype": "json",
        "version": "2.1",
        "keyfrom": "fanyi.web",
        "action": "FY_BY_REALTlME",
        }
    
        # 4.提交post请求
        # response接受返回的json格式
        response=requests.post(url, data = post_form)
    
        # 5.接受相应结果,解析提取
        trans_json = response.text
        trans_dict=json.loads(trans_json)
        trans_text=trans_dict["translateResult"][0][0]["tgt"]
    
        # 6.打印翻译结果
        print("翻译结果:%s" % trans_text)
    
    
上一篇 下一篇

猜你喜欢

热点阅读