先看效果展示(仅作学习使用,非商业)

效果图是采用的 爱词霸 翻译,百度翻译 也实现了,只不过被注释了。

学计算机很多时候碰到生词,每次打开手机/浏览器翻译总觉得很麻烦,就想着自己写一个软件,自己去实现字典又太麻烦了,就想借着网上的翻译网站,做个爬虫。于是就学了下python,开始了爬虫之旅。

代码开始部分:

 # -*- encoding: utf-8 -*-

 import wx
import requests
import re
import bs4
import json
import time
from requests import Session # 界面与逻辑分离

本着面向对象的编程思想,就把 界面实现,和 逻辑部分给分开了

定义了两个类,一个处理 爬虫请求(Handler),一个处理界面部分(Window)

接下来是 Handler 类:

 class Handler():
def __init__(self): # self.armUrl = r'https://fanyi.baidu.com/transapi' # 爱词霸
self.mainUrl = r'http://www.iciba.com/'
# 爱词霸
self.armUrl = "" self.headers = {
'User-Agent':
'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0',
} # self.data = {
# 'transtype': 'ente'
# } self.session = Session() # self.__initial()
#
# def __initial(self):
#
# r = requests.get(url = self.mainUrl, headers = self.headers)
# self.session.cookies = r.cookies # def setData(self, dict):
# self.data.update(dict) # 爱词霸
def mendUrl(self, query):
self.armUrl = self.mainUrl + query def requestText(self):
r = self.session.get(url = self.armUrl) soup = bs4.BeautifulSoup(r.content, 'lxml') try:
p = soup.find_all('p')[0] ans = ""
for span in p.find_all('span'):
ans += span.string + '\n' return ans except:
return "you fuck it up !!!" @property
def text(self):
return self.requestText()

Window 类部分:

 class Window():
def __init__(self, handler):
self.win = wx.Frame(None, title = 'SimpleTransl', size = (200, 150))
self.bkg = wx.Panel(self.win)
self.handler = handler self.translBtn = wx.Button(self.bkg, label = 'Transl')
self.waitContents = wx.TextCtrl(self.bkg, style = wx.TE_MULTILINE)
self.ansContents = wx.TextCtrl(self.bkg, style = wx.TE_MULTILINE) self.vbox = wx.BoxSizer(wx.VERTICAL) self.layout() def layout(self): self.vbox.Add(self.waitContents, proportion=3,
flag=wx.EXPAND | wx.TOP | wx.LEFT | wx.RIGHT, border=5) self.vbox.Add(self.translBtn, proportion=1,
flag=wx.EXPAND | wx.LEFT | wx.RIGHT, border=5) self.vbox.Add(self.ansContents, proportion=6,
flag=wx.EXPAND | wx.BOTTOM | wx.LEFT | wx.RIGHT, border=5) self.translBtn.Bind(wx.EVT_BUTTON, self.transl) self.bkg.SetSizer(self.vbox) def transl(self, event):
# f, t = self.checkLang()
#
# data = {
# 'from' : f,
# 'to' : t,
# 'query' : self.waitContents.GetValue()
# } # self.handler.setData(dict = data) # 爱词霸
self.handler.mendUrl(self.waitContents.GetValue()) self.ansContents.SetValue(self.handler.text) # def checkLang(self):
#
# txt = self.waitContents.GetValue()
#
# if not txt:
# return ('error', 'error')
#
# else:
# if 'a' <= txt[0] <= 'z' or 'A' <= txt[0] <= 'Z':
# return ('en', 'zh')
#
# else:
# return ('zh', 'en')
# def show(self): self.win.Show()

以上注释的部分是 百度翻译实现,取消注释,并且把 有 ‘爱词霸’ 标注部分注释就可以使用百度翻译实现了(但,requestsText 函数 提取信息要自己实现)

Window 类就是实现界面,定义了一个Button,两个 TextCrtl,并且给 翻译按钮绑定了一个事件,用于翻译。通过 构造函数,和 layout 函数 实现。

下面是 主函数:

 if __name__ == '__main__':

     app = wx.App()

     handler = Handler()

     window = Window(handler = handler)

     window.show()

     app.MainLoop()

PS.功能比较简单,后期可以拓展,比如 读音,界面美化等。。

 这里用爱词霸展示是有原因的, 在百度翻译里,只能提取出一个非常简单的意思,没办法提供丰富的翻译(有那位小伙伴解决了这个问题,可以告诉我)

比如 :下面是 百度翻译 返回的信息

你可以获取 data 下的 { src :爬 }

但却获取不了 { word_means [... ] } 里面的更加详细、有用的信息。

解决了这个问题的小伙伴麻烦告知下(我再去补一下 web 的知识看看能不能解决)。

python利用爬虫获取百度翻译,爱词霸翻译结果,制作翻译小工具的更多相关文章

  1. python 利用爬虫获取页面上下拉框里的所有国家

    前段时间,领导说列一下某页面上的所有国家信息,话说这个国家下拉框里的国家有两三百个,是第三方模块导入的,手动从页面拷贝,不切实际,于是想着用爬虫去获取这个国家信息,并保存到文件里. 下面是具体的代码, ...

  2. 《精通Python网络爬虫》|百度网盘免费下载|Python爬虫实战

    <精通Python网络爬虫>|百度网盘免费下载|Python爬虫实战 提取码:7wr5 内容简介 为什么写这本书 网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中.在搜索引 ...

  3. Python实现将爱词霸每日一句定时推送至微信

    前言 前几天在网上看到一篇文章<教你用微信每天给女票说晚安>,感觉很神奇的样子,随后研究了一下,构思的确是巧妙.好,那就开始动工吧!服务器有了,Python环境有了,IDE打开了...然而 ...

  4. python爬虫获取百度图片(没有精华,只为娱乐)

    python3.7,爬虫技术,获取百度图片资源,msg为查询内容,cnt为查询的页数,大家快点来爬起来.注:现在只能爬取到百度的小图片,以后有大图片的方法,我会陆续发贴. #!/usr/bin/env ...

  5. 一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

    [一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态. 今天小编以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来 ...

  6. Selenium2+python自动化34-获取百度输入联想词

    前言 最近有小伙伴问百度输入后,输入框下方的联想词如何定位到,这个其实难度不大,用前面所讲的元素定位完全可以定位到的. 本篇以百度输入框输入关键字匹配后,打印出联想词汇. 一.定位输入框联想词 1.首 ...

  7. Selenium2+python自动化34-获取百度输入联想词【转载】

    前言 最近有小伙伴问百度输入后,输入框下方的联想词如何定位到,这个其实难度不大,用前面所讲的元素定位完全可以定位到的. 本篇以百度输入框输入关键字匹配后,打印出联想词汇. 一.定位输入框联想词 1.首 ...

  8. 手把手教你用Python网络爬虫获取网易云音乐歌曲

    前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将 ...

  9. Python爬虫获取百度贴吧图片

    #!/usr/bin/python# -*- coding: UTF-8 -*-import urllibimport re文章来源:https://www.cnblogs.com/Axi8/p/57 ...

随机推荐

  1. 组件缓存注意事项 ---keep-alive

  2. 【laravel】Eloquent 模型事件和监听方式

    所有支持的模型事件 在 Eloquent 模型类上进行查询.插入.更新.删除操作时,会触发相应的模型事件,不管你有没有监听它们.这些事件包括: retrieved 获取到模型实例后触发 creatin ...

  3. Spring Security OAuth2之resource_id配置与验证

    一.resource_id的作用 Spring Security OAuth2 架构上分为Authorization Server认证服务器和Resource Server资源服务器.我们可以为每一个 ...

  4. consul与springcloud整合

    1. 服务提供者注册进consul 1.1新建支付服务module cloud-providerconsul-payment8006 1.2 pom.xml <?xml version=&quo ...

  5. 学习使用CompletableFuture

    CompletableFuture 一.前言 1.JDK5的异步处理方式 2.JDK8的异步处理方式 二.学习CompletableFuture 1.结果获取方式 2.创建CompletableFut ...

  6. System.nanoTime与System.currentTimeMillis比较

    System.nanoTime与System.currentTimeMillis比较 ​currentTimeMillis返回的是系统当前时间和1970-01-01之前间隔时间的毫秒数,如果系统时间固 ...

  7. intel:spectre&Meltdown侧信道攻击(二)

    上面一篇介绍了spectre&meltdown基本原理和简单的demo方案,今天继续学习一下该漏洞发现团队原始的POC:https://spectreattack.com/spectre.pd ...

  8. scala下划线的用法

    1.作为“通配符”,类似Java中的*.如import scala.math._2.:_*作为一个整体,告诉编译器你希望将某个参数当作参数序列处理!例如val s = sum(1 to 5:_*)就是 ...

  9. 安装ElasticSearch遇到的深坑

    实验需要ES,安装过程中遇到一些奇葩的问题,记录下.下面介绍下安装步骤: 第一步:安装java ES是运行在java虚拟机上面的,所以首先需要安装java环境,安装过程不再赘述,唯一需要注意的是ES对 ...

  10. Spark中直接操作HDFS

    Spark作为一个基于内存的大数据计算框架,可以和hadoop生态的资源调度器和分布式文件存储系统无缝融合.Spark可以直接操作存储在HDFS上面的数据: 通过Hadoop方式操作已经存在的文件目录 ...