python 自定义词典, 浏览器发出的请求, 拼接 url, 获取响应得到的文本信息。 xpath 匹配即可。 其他方式匹配也可 bs4, re, Selector 都是可以的。 这里面有很多的接口可以调用,
比如说, 有道词典, 百度翻译,金山词霸,谷歌翻译 等等都是可以的。
本小菜鸡采用的是 金山词霸------demo 如下:
# !/usr/bin/env Python3
# -*- coding: utf-8 -*-
# @Author : zsc
# @FILE : requests金山词霸自制英汉词典.py
# @Time : 2019/4/8 13:47
# @Software : PyCharm
import requests
from lxml import etree
from colorama import init,Fore
init(autoreset=True)
"""
给你点颜色看看:
这个工具是要自己使用的,最终是在控制台下显示,一团黑白相间的东西,没有美感,那么如何美化输出呢?将输出染上颜色。
控制台输出上色需要用到colorama第三方库,使用pip进行安装: pip install colorama
引入该库:
from colorama import init,Fore # init是初始化,Fore是字体颜色
init(autoreset=True) # 初始化
示例:
print(Fore.GREEN + '输入的单词不存在,重新输入.')
print(Fore.CYAN + translation.strip())
print(Fore.RED + '='*30)
"""
def main():
start_url = 'http://www.iciba.com/'
jinshan_url = start_url + word
headers = {
"Host": "www.iciba.com",
"Referer" : "http://www.iciba.com/",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
}
response = requests.get(url=jinshan_url, headers = headers)
html = etree.HTML(response.content.decode("utf-8"))
word_hanyi = html.xpath("//ul[@class='base-list switch_part']//text()")
word_hanyi = [ i.strip() for i in word_hanyi if i.strip() != '']
print("翻译结果为:", word_hanyi)
print("=" * 100)
return word_hanyi
if __name__ == '__main__':
while True:
word = input(Fore.GREEN + "请输入你想查询的词语: \n")
if word == 'q':
break
else:
word_hanyi = main()
if word_hanyi == []:
print(Fore.RED + "这个词语不存在,请重新输入")
另外附上这位仁兄的代码 : 链接 : https://blog.csdn.net/yaoyefengchen/article/details/78822322
import urllib.parse
import urllib.request
from bs4 import BeautifulSoup
from colorama import init,Fore
init(autoreset=True)
root_url = 'http://www.iciba.com/'
while True:
word = input('请输入想要查询的单词(或"q"退出):\n')
if word == 'q':
break
else:
url = root_url + urllib.parse.quote(word) # 解决url中带有中文编译失败的问题
response = urllib.request.urlopen(url)
html = response.read()
soup = BeautifulSoup(html, 'lxml')
tag_soup = soup.find(class_='base-list switch_part')
if tag_soup == None: # 防止输入的单词没有释义
print(Fore.GREEN + '输入的单词不存在,重新输入.')
else:
meanings = tag_soup.find_all(class_='clearfix')
for i in range(len(meanings)):
translation = meanings[i].get_text()
print(Fore.CYAN + translation.strip()) # 去掉字符串开头和结尾的空行
print(Fore.RED + '='*30)