【爬取百度翻译】-实现本地使用百度翻译功能

一、网页分析

目标网址:https://fanyi.baidu.com/
在这里插入图片描述

同样的对于这个网页第一步分析:doc中有没有参数
先随便输入一个单词进行查看,发现页面并没有信息,说明是异步请求ajax

在这里插入图片描述

控制台点击xhr,将页面重新刷新,并且清空控制台显示的包,再输入单词,可以多测试几个,对比数据
在这里插入图片描述
响应的参数中查找到数据
在这里插入图片描述
观察路由
在这里插入图片描述
通过以上分析:

对于爬虫。第一步永远分析doc中是否直接有数据
如果没有数据的话,一般都是异步请求ajax,另外还有个css文字加密等等,后面遇到再说明

那么目标网页应该为异步接口的网址
再次清空数据包,刷新浏览器
在这里插入图片描述
在这里插入图片描述
查看响应内容
在这里插入图片描述

确认了目标url:
在这里插入图片描述

二、代码与实现步骤

import requests


# 什么样的代码是好代码?
def translate_word(word):
    '''
    翻译单词
    :param word: 单词
    :return: 中文解释
    '''
    # 确定url
    base_url = 'https://fanyi.baidu.com/sug'
    # 准备参数
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
        'x-requested-with': 'XMLHttpRequest',  # 异步请求
        'content-length': str(len(word) + 3),  # 百度固定
        'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',  # 响应正文 格式
    }
    data = {
        'kw': word,
    }
    response = requests.post(base_url, headers=headers, data=data)
    print(response.json())
    # return response.json()
    print(type(response.json()))
    result = ''
    for data in response.json()['data']:
        result += data['v'] + '\n'
    return result


def main():
    # 1、确定翻译内容
    word = input('请求输入单词:')
    # 2、翻译
    result = translate_word(word)
    # 3、显示
    print(result)


if __name__ == '__main__':
    main()

三、结果分析

输入单词,能够正确的翻译,与百度翻译一致
在这里插入图片描述

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值