用Python给论文快速翻译并保存为Word

长长的论文,我想要一键快速翻译!反正我自己翻译是不得行的,那就……

嘿嘿~~~~   Python整活可真行!

今天来学学如何运用网络爬虫,制作一款翻译工具,并在一分钟以内翻译完一篇百页论文

HTML,全称为超文本标记语言,是一种标记语言,通过标记式的指令,将影像、声音、图片、文字动画、影视等内容显示出来。

当浏览器接收到 HTML 页面,并“翻译”成可以识别的信息,即可呈现你所见到这个网页。

HTTP请求

当浏览器向服务器发送一个 HTTP 请求时,包含请求行、请求头、请求体三个部分。
请求行:包含请求方法、请求URL 、HTTP版本。
请求头:服务器辨析请求头获取浏览器的信息。
请求体:承载请求参数的数据。

常见的请求方法有两种:GET 和 POST。
GET - 从指定的服务器请求数据。
POST - 向指定的服务器提交要被处理的数据

HTTP响应

服务器接收并处理浏览器发过来的请求后,会返回 HTTP 响应,也由三个部分组成,分别是:响应行、响应头、响应正文。
响应行:包含协议版本、状态码。
响应头:包含服务器名称、响应正文类型、响应正文编码等信息。
响应正文:服务器返回浏览器的数据信息。

HTTP状态码

HTTP 状态码(Status)是服务器告诉浏览器当前请求响应的状态,也就是服务器告诉浏览器:发生了什么事。
HTTP状态码由 3 位数字构成的,以下是常见状态码:
200 - 请求成功
301 - 请求的网页被分配了新的URL
404 - 请求的网页不存在
500 - 服务器错误

通过代码pip install requests 安装 requests 模块

pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple/

什么是API

API 是 Application Programming Interface (应用 编程 接口)三个单词的缩写。

通俗易懂的说,API 也就是别人写好的代码,或者编译好的程序,提供给大家使用。

爬虫毕竟是在模拟浏览器发送请求,如果我们频繁请求,或者爬取内容过多,很容易被网站识别出是爬虫,从而拒绝请求,掉进网站的反爬虫机制。

别着急,在今天的课程中,给你介绍一个反反爬虫策略——设置User-Agent

设置UA

设置 User-Agent 以字典的格式添加进 requests.post() 函数中。

在本例中,新加一个字典 header,键为User-Agent,对应的值为

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36

在课程中,你可以使用这个 User-Agent👆;在本地练习时,你可以获取自己电脑中的浏览器的 User-Agent。

很多网站都会用到 JSON 格式来进行数据的传输和交换,例如XX云音乐接口,它们返回的数据都是 JSON 格式的。
当我们获取到 JSON 数据后,可以进行解码,转换成字典数据类型,从而提取出指定数据。

完整的代码如下

# 使用import导入requests模块
import requests
# 使用import导入json模块
import json
# 使用import导入docx模块
import docx
# 使用import导入time模块
import time

# 将Word文档路径赋值给变量path
path = "/yequ/论文.docx"
# 读取Word文档赋值给变量docxFile
docxFile = docx.Document(path)
# 获取全部段落赋值给变量paragraphs
paragraphs = docxFile.paragraphs
# TODO 新建Word文档赋值给变量docxNew
docxNew = docx.Document()

# 将API链接赋值给url
url = "https://fanyi.youdao.com/translate"
# 将User-Agent以字典键对形式赋值给header
header = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"}

# for循环遍历paragraphs,并赋值给par
for par in paragraphs:
    # 使用.text获取段落文本并赋值给par_text
    par_text = par.text
    # 如果段落文本不为空
    if par_text != "":
        # 构建一个字典word,添加键值为"i"其值为par_text
        # 添加键值为"doctype"其值为"json"。
        word = {"i":par_text, "doctype":"json"}
        # 停顿0.1秒
        time.sleep(0.1)
        # 使用requests.post(),赋值给变量response
        # 传入url
        # 传入参数data,值为字典word
        # 传入参数headers,值为字典header
        response = requests.post(url, data=word, headers=header)
        # 使用.text获取内容并赋值给res_text
        res_text = response.text
        # 使用json.loads()将str转换成dict,赋值给data
        data = json.loads(res_text)
        # 通过字典层层索引,找到翻译后的内容,并赋值给translate
        translate = data["translateResult"][0][0]["tgt"]
        # TODO 使用add_paragraph()向文档中添加translate
        docxNew.add_paragraph(translate)
        
# TODO 保存并命名文档至指定路径
docxNew.save("/yequ/翻译论文.docx")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值