python 自定义词典------英汉翻译

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)

 

你可能感兴趣的:(爬虫小练习)