python爬虫英文单词_Python_爬虫百度英文学习词典
主方法main
定義主函數main,程序的入口,首先導入io包,用os.path.exists判斷字典文件是否存在,如果不存在則新建一個,然后進入循環中,讓用戶輸入相應的數字,執行相應的功能。
def main():
flag = os.path.exists('dictionary.csv')
if flag == False:
d = open('dictionary.csv', 'w')
d.close()
while 'true':
print('---英語學習詞典(1添加2查詢3退出)---')
num = input('請輸入相應功能的編號:')
if num == '1':
inputWord()
elif num == '2':
serachWord()
elif num == '3':
break
else:
print('輸入有誤,請重新輸入')
inputWord方法
inputWord這是一個添加英語和對應中文意思的方法,打開這個文件,先把光標移動到開頭,通過一行一行掃描,然后把行內的英語單詞通過分片的形式分割出來,判斷用戶輸入的英文單詞字典中是否存在,如果存在則提示,并輸入對應的翻譯,如果不存在則再進行添加進字典里面
def inputWord():
with open('dictionary.csv', 'a+', encoding='utf-8', newline='') as csv_file:
csv_file.seek(0)
e = input('請輸入你要錄入的英語單詞:')
files = csv_file.readlines()
for file in files:
file = file.replace('\n', '')
ls = file.split('-')
if ls[0] == e:
print('該單詞已添加過了,中文意思是:' + ls[1])
return
# 字典找不到單詞,開始添加
csv_file.seek(2)
c = input('請輸入對應的中文意思:')
line = '\n' + e + '-' + c
csv_file.writelines(line)
print(e + '已添加成功')
serachWord方法
serachWord這是查找功能,用戶輸入英文單詞,查詢中文意思,打開字典文件,每行掃描,提取前面的英文單詞,遍歷與用戶輸入的單詞匹配,如果不存在則提示,沒有找到這個單詞,然后給用戶提供是否需要通過百度翻譯,查看意思,并且翻譯結束后可以添加進字典中
def serachWord():
word = input('請輸入你要查詢的英語單詞')
with open('dictionary.csv', 'r+', encoding='utf-8') as csv_file:
files = csv_file.readlines()
# print(files)
# print(type(files))
for file in files:
file = file.replace('\n', '')
ls = file.split('-')
# print(ls)
if ls[0] == word:
print('中文意思是:' + ls[1])
return
print('字典庫中未找到這個單詞')
flag = input('是否要通過百度翻譯查看翻譯:(輸入Y/y查詢)')
if (flag == 'Y') | (flag == 'y'):
chn = baudu(word)
print('百度翻譯:' + chn)
if chn != '出錯了':
flag2 = input('是否要添加進詞典:(輸入Y/y添加)')
if (flag2 == 'Y') | (flag2 == 'y'):
line = '\n' + word + '-' + chn
csv_file.writelines(line)
print(word + '已添加成功')
baidu方法
baidu這個方法,是通過百度翻譯官網爬蟲實現,用到requests庫
def baudu(word):
url = 'https://fanyi.baidu.com/sug'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36'
}
data = {'kw': word}
try:
r = requests.post(url, data=data, headers=headers, timeout=5)
r.raise_for_status()
data = r.json()['data']
for i in data:
if i['k'] == word:
return i['v']
else:
return '出錯了'
except:
return '出錯了'
實驗結果:
總結
以上是生活随笔為你收集整理的python爬虫英文单词_Python_爬虫百度英文学习词典的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UIImageView 圆角
- 下一篇: 【PYTHON】基于tkinter的九型