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

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

学计算机很多时候碰到生词,每次打开手机/浏览器翻译总觉得很麻烦,就想着自己写一个软件,自己去实现字典又太麻烦了,就想借着网上的翻译网站,做个爬虫。于是就学了下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. .net core options 依赖注入的方式

    options 依赖注入的方式 public class JwtSettingsOptions { public const string JwtSettings = "JwtSetting ...

  2. Go语言基础语法总结

    1. 认识HelloWorld 在前面的<Go的安装和使用>这篇文章中已经写过HelloWorld.go了,现在就来逐行认识一下它. package main import "f ...

  3. 云原生时代高性能Java框架—Quarkus(二)

    --- *构建Quarkus本地镜像.容器化部署Quarkus项目* Quarkus系列博文 Quarkus&GraalVM介绍.创建并启动第一个项目 构建Quarkus本地镜像.容器化部署Q ...

  4. javascript中的堆栈、深拷贝和浅拷贝、闭包

    堆栈 在javascript中,堆内存是用来存放引用类型的空间环境 而栈内存,是存储基本类型和指定代码的环境 在对象中的属性名具有唯一性,数字属性名=字符串属性名,但是在测试的时候你会发现,好像所有属 ...

  5. HRNet + Object Contextual Representation

    文章内容来自CCF-CV走进高校报告会中MSRA王井东老师的报告"Learning high-resolution and object-contextual representations ...

  6. 什么是Hexo博客

    Hexo 是一个基于nodejs 的静态博客网站生成器,作者是来自台湾的Tommy Chen. 特点: 不可思议的快速 ─ 只要一眨眼静态文件即生成完成 支持 Markdown 仅需一道指令即可部署到 ...

  7. PHP fileowner() 函数

    定义和用法 fileowner() 函数返回指定文件的用户 ID(所有者). 如果成功,该函数返回用户 ID.如果失败,则返回 FALSE. 语法 fileowner(filename) 参数 描述 ...

  8. C/C++编程笔记:一张思维导图,带你总结C语言全部知识点!

    很多小伙伴想要好好地学习一下C语言的知识,但是又不知道怎么学,应该学哪一些C语言的知识,笔者在网上看到了这一张C语言的比较完善的C语言的学习路线图,有兴趣的小伙伴可以保存起来哈! C语言是面向过程的, ...

  9. 6.10 省选模拟赛 小C的利是 高斯消元 矩阵行列式

    LINK:小C的利是 想起来把这道题的题解写了 .一个常识:利是在广东那边叫做红包. 关于行列式的题目 不过我不太会23333..口胡还是可以的. 容易想到10分的状压.不过没什么意思. 仔细观察要求 ...

  10. luogu P3217 [HNOI2011]数矩形

    LINK:数矩形 题意:给出n个点 求出一个最大的矩形. 矩形可以使斜着的.(不会告诉你样例我算了几年 这道题的一个潜规则 矩形面积都是整数 我也不知道为啥一定是整数 姑且是题目输出的要求吧. 所以用 ...