excel表格是背单词的好工具,尤其是对于我这种懒得用手的人
德语助手自带了导出单词本的工具,但导出的格式只有xml(我不知道是啥玩应儿),html(网页格式),和txt(记事本),显然都不是我想要的。
最近刚好学了点python爬虫相关的东西,于是决定应用一下。
选择导出格式为html,导出简单解释。
然后就获得了一个html文件
然后打开网页右键选择查看源代码
提取分三个部分进行。首先每一行的单词数据通过<tr>与</tr>分隔,先通过正则表达式提取他们
pat1 = '<tr>([Ss]*?)</tr>'
提取之后出现两种结果
第一个是首行用于描述每列内容类型的
由于我懒所以选择直接提取他们并写入表格中
(注意这里正则表达式匹配到的第一个内容为'#',后面在批量写入表格文件前需要将其修改为'0'以表示第一行的第一列)
pat3 = '<th class=".*?">(.*?)</th>'
第二个是单词行
包含了单词的音标、释义等信息
pat2 = ’<td class="export-td">([Ss]*?)</td>'
然后获取了以上信息之后就可以得到每行每列内容的列表,稍作修改就可以用了
下面是完整代码
import xlwt
import re
path = "2.html"
pat1 = '<tr>([Ss]*?)</tr>'
pat2 = '<td class="export-td">([Ss]*?)</td>'
pat3 = '<th class=".*?">(.*?)</th>'
file = open(path, 'r', encoding='utf-8')
output = open('contain.txt', 'w', encoding='utf-8')
exl = xlwt.Workbook()
sh1 = exl.add_sheet('Fuck Deutschland')
data = file.read()
al = re.compile(pat1).findall(data)
sp = []
for i in range(len(al)):
if not i:
a = re.compile(pat3).findall(al[i])
a[0] = '0'
sp.append(a)
else:
a = re.compile(pat2).findall(al[i])
sp.append(a)
for j in range(len(sp[i])):
x, y = int(sp[i][0]), j
sh1.write(x, y, sp[i][j])
exl.save('output.xls')
output.close()
file.close()
print("OVER")