Python爬虫基础实战——用爬虫来自动翻译英文文档

本文介绍如何使用Python编写一个简易的爬虫程序,自动翻译英文技术文档,并将翻译结果保存为新的文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接着上次的python内容,我们继续进行python应用上手

实际python做项目的时候我们都或多或少的要接触一些文档,而很坑的是,这些技术文档多半还是用英文写的,其实因为近年来卷积神经网络等机器学习技术的发展,计算机语言翻译功能已经非常发达,我们可以更多的尝试用软件来翻译文档,

这里我们做一个简单的爬虫,把我们的文档自动送给“百度翻译”,然后让爬虫再自动把翻译结果下载下来~。

知己知彼,百战不殆,我们先去“百度翻译”的官网踩踩点:

网址是“http://fanyi.baidu.com/?aldtype=16047#auto/zh”

在制作爬虫之前,我们必须要先知道我们提交表单时它的通讯格式:

在网页上右键 审查元素,点击Network,在name中点击v2transapi

如下图:

看到如下画面,



这个就是它的通讯格式,

由此我们可以开始写代码了:

先安装我们必要的插件 urllib:

这里我已Python2.7为例:

使用python的pip进行安装 操作如下:

打开命令提示符:

输入 pip install urllib

 


看到如下画面,


然后我们再安装另一个模块插件 docx ,方法同上;

 

安装成功以后。

我们开始码代码:

# -*- coding:UTF-8 -*- 
import urllib
import json
import requests
from docx.api import Document
from docx.shared import Pt
import docx
import time
content=0
# doc_new = docx.Document(ur'翻译结果.docx')
doc_new = Document()
def writeDocx(p):
    #从样式库中选取 'Normal' 样式,并提取 'Normal' 样式的字符属性
    style = doc_new.styles['Normal']
    font = style.font
    #设置样式中的字符属性 ,操作方法和上面改变内联对象属性方法一致
    font.name = "Microsoft YaHei UI"
    font.size = Pt(8)
    #将设置好字符属性的样式运用到段落中
    p = doc_new.add_paragraph(p, style = 'Normal')
#     doc_new.add_paragraph(p.text,style='Heading 2')
    doc_new.save(ur'翻译结果.docx')
def transDocx(docName):
    fullText = []
    doc = docx.Document(docName)
    paras = doc.paragraphs
    i=0
    for p in paras:
        i=i+1
#         print ("第"+str(i)+"段")
        content=p.text
        if content=='':
            continue
#         print "this will sleep for 3 seconds"
        time.sleep(2)
       
#         print content
#         content='Introduction to Social Network Methods 
        try: 
            url="http://fanyi.baidu.com/v2transapi"
            data={}
            data['from']='en'
            data['to']='zh'
            data['query']=content
            data['transtype']='translang'
            data['simple_means_flag']='3'
            data=urllib.urlencode(data).encode("utf-8")
            response=urllib.urlopen(url,data)
    #       post_html = requests.post(url,data=post_data)
            html=response.read().decode("utf-8")
#             print html
            target=json.loads(html)
            print target
            if target.has_key('trans_result'):
                tgt=target['trans_result']['data'][0]['dst']
#                 print tgt
                writeDocx(tgt)
            else:
                print "传入段落出现不明问题,网站返回结果有无,第"+str(i)+"段跳过翻译"
        except:
                print "出现不明字符,第"+str(i)+"段跳过翻译"
    return '\n'.join(fullText)
filename='mydocument.docx'
transDocx(filename)


 给大家简单解释一下这段代码的含义

其中

def transDocx(docName):函数是用来翻译整篇文档的,

它先调用docx,读取文件的全部内容

 doc = docx.Document(docName)

然后再解析段落,

 paras = doc.paragraphs

这时候,我们就得到了一个字符串列表

其中的每一个元素就是一个段落的全部内容所组成的一个字符串

然后把每一个段落的内容发送到“百度翻译”,让它给我们解析

这里注意,每解析一段就要让程序休眠一两秒,因为如果发送内容太频繁,“百度翻译”会自动检查出来,认为你恶意占用资源,然后它会封了你的IP,那就惨了

因为我们之前已经知道了它的通讯方式,所以编辑一下代码:

            url="http://fanyi.baidu.com/v2transapi"
            data={}
            data['from']='en'
            data['to']='zh'
            data['query']=content
            data['transtype']='translang'
            data['simple_means_flag']='3'
            data=urllib.urlencode(data).encode("utf-8")
            response=urllib.urlopen(url,data)

其中data是一个字典,它内部包含有通讯的全部内容,我们把它发给“百度翻译”

然后接收到response就是翻译结果,按照如下方式进行解析,就好了


翻译的情况打印出来如下:

这里我们借助docx插件来翻译好的内容写入另一个文件翻译结果.docx中,

 

 

如果你说你还没有安装pip,怎么办?

安装pip的方式如下:(够贴心吧~!)

http://www.cnblogs.com/NanShan2016/p/5518235.html

 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值