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

文章目录

  • 一、网页分析
  • 二、代码与实现步骤
  • 三、结果分析

一、网页分析

目标网址:https://fanyi.baidu.com/
【爬取百度翻译】-实现本地使用百度翻译功能_第1张图片

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

【爬取百度翻译】-实现本地使用百度翻译功能_第2张图片

控制台点击xhr,将页面重新刷新,并且清空控制台显示的包,再输入单词,可以多测试几个,对比数据
【爬取百度翻译】-实现本地使用百度翻译功能_第3张图片
响应的参数中查找到数据
【爬取百度翻译】-实现本地使用百度翻译功能_第4张图片
观察路由
【爬取百度翻译】-实现本地使用百度翻译功能_第5张图片
通过以上分析:

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

那么目标网页应该为异步接口的网址
再次清空数据包,刷新浏览器
【爬取百度翻译】-实现本地使用百度翻译功能_第6张图片
【爬取百度翻译】-实现本地使用百度翻译功能_第7张图片
查看响应内容
【爬取百度翻译】-实现本地使用百度翻译功能_第8张图片

确认了目标url:
【爬取百度翻译】-实现本地使用百度翻译功能_第9张图片

二、代码与实现步骤

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()

三、结果分析

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

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