Python爬虫:利用百度翻译简单翻译单词

这是一个很简单的一个小爬虫,只适合最开始学习的小白练手的小项目,我自己学习后练手的一个小项目,很基础,仅仅用于交流。

首先我使用的是requests和json这两个库,如果不会安装的话可以点击下面的链接

https://www.cnblogs.com/dcmywl/p/16051536.html

首先,进入百度翻译

然后打开开发者模式,可以右键然后点击Inspect,或者按F12进入开发者模式

 

 

 然后,点击Network,之后,随便输入一个单词dog,然后回车,然后点击Fetch/XHR,这个是抓取的Ajax的数据包

使用Ajax技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作,说白了就是只需要接收变化的东西并将其反映在网页,不需要将整个页面(包括不变的地方)都接收,实在想了解可以百度

 你会发现有很多包,你可以从以下方面入手,首先我们输入单词后,是发送了一个单词给服务器,这个请求就应该是一个post请求了,因此,先看Headers请求头中的Request Method(请求类型)是post的包,如果是post则看Preview部分,如果看到文本和对应的翻译一致,则这个包就是我们要利用的,可以看到下面的sug就是我们要找的

 

 

 然后回到该包的Headers,将它的Request URL粘贴复制以备后面使用,可以看到Response Headers(响应头)中的Content-Type数据类型是json类型,这一点也很重要,这关系到我们如何解析响应后的数据。

 

 

然后,点击Payload,可以看到给Request URL发送的参数kw是dog,与我们输入的单词一致,看来确实是我们要找的包

 

 

 好了,前戏都做完了,终于可以开始高潮部分了(前戏很重要哦,开一下车~)

复制代码
import requests
# 导入包肯定都没问题
if __name__ == '__main__':
    # 指定url,就是我们拿到的那个Request URL
    post_url = 'https://fanyi.baidu.com/sug'
    # 进行UA伪装,这个应该影响不大
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36'
    }

    def translate():
        # 循环是为了可以多次翻译
        while True:
            # post请求参数处理,既然你想翻译任意的单词,肯定需要更改kw的值,不然如何做到随心的输入单词并翻译?
            kw = input('请输入想翻译的单词(输入q结束):')
            if kw == 'q':
                print('谢谢使用')
                return  1
            else:
                # 将post请求的参数包装到字典中并赋值给data
                data = {
                    'kw': kw
                }
                try:
                    # 请求发送,我懒得取名字,直接和post函数关键字参数一致,
                    # 传给url的即为上面的post_url,传给关键字参数data的是data(即Payload中的东西)
                    # headers=headers是为了UA伪装
                    response = requests.post(url=post_url,data=data,headers=headers)
                    # 获取响应数据:json()方法返回的是字典对象(如果确认服务器响应数据是json,才可以使用json()
                    dic_obj = response.json()
                # 不想细节的处理异常所以直接BaseException了,如果异常直接返回None
                except BaseException as e:
                    return None

                # 解析得到的数据,可以再上一步时在终端上打印一下dic_obj,然后看看如何提取数据
                # 这个很简单就不赘述了
                try:
                    dic = list(dic_obj['data'][0].values())
                    # 为了结果可以舒服一点就这样处理了
                    print(dic[0],end='\t')
                    print(dic[1])
                except IndexError as e:
                    print('翻译失败,请检查输入的单词是否正确')
                    continue
    # 调用翻译函数,同时对返回None的情况进行处理,因为懒所以只要返回None就直接打印服务器连接失败
    error = translate()
    if error == None:
        print('服务器连接失败')
复制代码

 

 大功告成,一发入魂。

posted @   DC没有无了  阅读(507)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示