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

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

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

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

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

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

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

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

如下图:

Python爬虫基础实战——用爬虫来自动翻译英文文档_第1张图片

看到如下画面,


Python爬虫基础实战——用爬虫来自动翻译英文文档_第2张图片

这个就是它的通讯格式,

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

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

这里我已Python2.7为例:

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

打开命令提示符:

输入 pip install urllib

 Python爬虫基础实战——用爬虫来自动翻译英文文档_第3张图片


看到如下画面,

Python爬虫基础实战——用爬虫来自动翻译英文文档_第4张图片


然后我们再安装另一个模块插件 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就是翻译结果,按照如下方式进行解析,就好了


翻译的情况打印出来如下:Python爬虫基础实战——用爬虫来自动翻译英文文档_第5张图片

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

 

 

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

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

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

 


你可能感兴趣的:(有代码,工具型,Python爬虫,翻译,dox文档操作,form表单)