零.目录
1.引子
2.原理
3.实践
3.1.需求
3.2.实现思路
3.3.实现步骤
4.运行结果展示
一.引子
在当今全球化的时代,跨语言交流日益普遍,而在线翻译服务成为了解决语言障碍的重要工具。本文将深入介绍如何利用Python爬虫技术,结合各种在线翻译平台,实现自动化的文本翻译。我们将探索实现原理、应用场景,并提供实用示例,助力读者掌握这一强大而实用的技能。
二.原理
Python爬虫的基本原理如下:首先,爬虫通过网络请求获取网页源代码;其次,解析源代码,提取所需信息,通常使用正则表达式或解析库如BeautifulSoup;然后,将提取的数据进行处理,可能是存储到数据库或文件中;最后,持续不断地循环执行这一过程,以实现自动化地抓取数据。这一原理简明扼要,却蕴含了深刻的网络技术和编程理念,让人不禁想要深入探索其中的奥秘。
三.实践
(1).需求
以requests库、BeautifulSoup库、jieba库为主要工具,当用户输入单词,便会从搜狗在线翻译获取翻译,弹出单词音标和释义。
(2).实现思路
1.用户输入
2.查找对应网页
3.读取释义并反馈给用户
4.下轮输入
(3).实现步骤
1.骨架
我们首先导入必要的库,再创建一个主函数,它目前只包含了一个
import time
import requests
from bs4 import BeautifulSoup
def main(count, fix, headers):
print('\n')
thing = input('请输入:')
if __name__ == '__main__':
while True:
main(count=0, fix='',
headers={'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)'})
2.爬取URL
经过观察,搜狗翻译将每一个单词归到一个单独的页面,这让我们爬取的难度降低了许多。URL规律如下所示:
发现单词处在'keyword'中,且每一行都表示为一个'%0A',那么我们便'对症下药',开始编写。在main函数中添加如下代码:
try:
response = requests.get(
f'https://fanyi.sogou.com/text?keyword={thing}%0A&transfrom=auto&transto=zh-CHS&model=general',
headers=headers, timeout=10)
time.sleep(1)
except ConnectionError as c:
print(f'\t连接错误! {c}')
except FileNotFoundError as f:
print(f'\t错误! {f}')
except TimeoutError as T:
print(f'\t响应超时! {T}')
else:
pass
3.抓取翻译与反馈
使用BeautifulSoup获取翻译。由于网页做了混淆,缩进也很乱,所以我们直接复制源代码到pycharm进行格式化:
格式化前:
格式化后:
可以看到,单词的释义都处于属性class的div标签下,因此可以传入这个属性进行方法选择。经过一些输出的格式化后,代码如下,注意是添加在刚刚的else代码块下:
soup = BeautifulSoup(response.text, 'lxml')
mean = soup.find_all('div', class_='item-wrap')
for c in mean:
fix += c.get_text()
for p in fix:
if p == '英':
print('\n音标:', end='')
elif p == ']':
count += 1
if count == 2:
print(']')
print('释义:', end='')
continue
print(p, end='')
没错,我们的fix形参就是用来拼接的字符串,但这么写实在冗长,希望各位大神能在评论区留一下你们的意见!
4.运行结果展示
结果如下,你也可以在cmd里运行: