本帖最后由 千城忆梦 于 2021-4-30 17:58 编辑
可以批量下载搜狗输入法词库的代码,修改自 https://tieba.baidu.com/p/5285709406
下附打包好的exe文件和词库文件
下载全部词库文件的代码:
[Python] 纯文本查看 复制代码 import os
from urllib.request import urlopen
from bs4 import BeautifulSoup
import urllib.request
# 格式:分类名,对应的链接,页数
cates = [
["城市信息", 167, 8],
["自然科学", 1, 28],
["社会科学", 76, 34],
["工程应用", 96, 75],
["农林渔畜", 127, 9],
["医学医药", 132, 32],
["电子游戏", 436, 100],
["艺术设计", 154, 17],
["生活百科", 389, 77],
["运动休闲", 367, 16],
["人文科学", 31, 81],
["娱乐休闲", 403, 101]
]
sets = ['/', '\\', ':', '*', '?', '"', '<', '>', '|'] # windows文件命名不能有这些字符
for cate in cates:
count = 0
os.mkdir("./" + cate[0])
for i in range(1, cate[2] + 1):
html = urlopen("https://pinyin.sogou.com/dict/cate/index/" + str(cate[1]) + "/default/" + str(i))
bsObj = BeautifulSoup(html.read(), "html.parser")
nameList = bsObj.findAll("div", {"class": "detail_title"})
urlList = bsObj.findAll("div", {"class": "dict_dl_btn"})
for name, url in zip(nameList, urlList):
count += 1
name = name.a.get_text()
for char in name:
if char in sets:
name = name.replace(char, "") # 去除windows文件命名中非法的字符
urllib.request.urlretrieve(url.a.attrs['href'], "./" + cate[0] + "/" + str(count) + name + ".scel")
# 文件名加count是因为词库名可能会重复
print(cate[0], count, name)
只下载带有【官方推荐】的词库的代码:
[Python] 纯文本查看 复制代码 import os
from urllib.request import urlopen
from bs4 import BeautifulSoup
import urllib.request
# 格式:分类名,对应的链接,页数
cates = [
["城市信息", 167, 8],
["自然科学", 1, 28],
["社会科学", 76, 34],
["工程应用", 96, 75],
["农林渔畜", 127, 9],
["医学医药", 132, 32],
["电子游戏", 436, 100],
["艺术设计", 154, 17],
["生活百科", 389, 77],
["运动休闲", 367, 16],
["人文科学", 31, 81],
["娱乐休闲", 403, 101]
]
sets = ['/', '\\', ':', '*', '?', '"', '<', '>', '|'] # windows文件命名不能有这些字符
for cate in cates:
count = 0
os.mkdir("./" + cate[0] + " 官方推荐")
for i in range(1, cate[2] + 1):
html = urlopen("https://pinyin.sogou.com/dict/cate/index/" + str(cate[1]) + "/default/" + str(i))
bsObj = BeautifulSoup(html.read(), "html.parser")
nameList = bsObj.findAll("div", {"class": "detail_title"})
urlList = bsObj.findAll("div", {"class": "dict_dl_btn"})
for name, url in zip(nameList, urlList):
count += 1
name = name.a.get_text()
if name.find("官方推荐") == -1: # 名字里没有官方推荐就跳过
continue
else:
for char in name:
if char in sets:
name = name.replace(char, "") # 去除windows文件命名中非法的字符
urllib.request.urlretrieve(url.a.attrs['href'], "./" + cate[0] + " 官方推荐" + "/" + str(count) + name + ".scel")
# 文件名加count是因为词库名可能会重复
print(cate[0], count, name)
链接:https://qcym.lanzouj.com/b00ugop7i
密码:6ri6
内有文件:
1、all.exe:下载全部词库,打开后在当前目录保存文件,命令行显示下载信息
2、recommend.exe:下载【官方推荐】词库,其余同上
3、搜狗输入法全部词库.7z:全部词库打包文件
4、搜狗输入法【官方推荐】词库.7z:【官方推荐】词库打包文件
建议:建议使用【官方推荐】词库,因为全部词库太大了,无论是转换格式还是转换后导入别的软件,都很麻烦。
5、深蓝词库转换2.9.zip:词库转换格式用,原地址 https://github.com/studyzy/imewlconverter
6、有问题的文件举例.zip:这个文件很小,可是会转换失败,显示“偏移量和长度超出数组的界限,或者计数大于从索引到源集合结尾处的元素数量。”,期待大佬找找原因。
代码可改进的地方:
没有使用多线程,因为我不会,也懒得搞,期待大佬改进。
更新一:
更新一个txt去重排序的代码,不能直接用,需要自己修改使用
思路:前半段代码把不同的文件合并到同一个,后半段代码对合并后的文件进行去重排序
[Python] 纯文本查看 复制代码 with open("./all.txt", 'a', encoding='UTF-8') as f1:
for i in range(1, 13):
with open("./" + str(i) + ".txt", 'r', encoding='UTF-8') as file:
lines = file.readlines()
for line in lines:
f1.write(line)
with open("./all.txt", 'r', encoding='UTF-8') as f1:
tmp = f1.readlines()
tmp = list(set(tmp)) # 去重
tmp.sort() # 排序
with open("./all_remove.txt", 'a', encoding='UTF-8') as f2:
for v in tmp:
f2.write(v)
更新二:
应网友请求做了Win10微软拼音的词库 已更新到下载链接中
使用方法看这里 https://www.52pojie.cn/thread-1227015-1-1.html
如果我的代码有帮助到你,希望给个免费评分!谢谢!
|