吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14782|回复: 72
收起左侧

[Windows] 搜狗输入法词库批量下载【修改自他人,附源码】

  [复制链接]
千城忆梦 发表于 2021-4-30 15:46
本帖最后由 千城忆梦 于 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

如果我的代码有帮助到你,希望给个免费评分!谢谢!

免费评分

参与人数 13吾爱币 +11 热心值 +12 收起 理由
竹轩 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ivarcn + 1 + 1 我很赞同!
babybaby + 1 + 1 其实最烦的就是搜狗词库分太多个细胞了!!!
逆流砂 + 1 + 1 我很赞同!
安辰- + 1 + 1 感谢大大的词库爬取源码分享,码代码不易,辛苦了
Goodmanwhite + 1 + 1 谢谢@Thanks!
lonny888 + 1 + 1 谢谢@Thanks!
co584131421 + 1 + 1 谢谢@Thanks!
helh0275 + 1 谢谢@Thanks!
叫我小王叔叔 + 1 我很赞同!
xiaocaosz + 1 + 1 谢谢@Thanks!
再度征途 + 1 我很赞同!
zj_tj + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

fanvalen 发表于 2021-4-30 16:06
[Python] 纯文本查看 复制代码
# -*- coding: utf-8 -*-
'''
envs=python3.8.5
Created on Thu Apr 15 17:18:34 2021
@author: Administrator
'''
#sogou 常用词库
import requests,re

hd={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}

murl='https://pinyin.sogou.com'
fls='''
<li id="nav_1" class="nav_list cur_nav">
                             	<a href="/dict/cate/index/167"></a>
            </li>
         	                    		<li id="nav_2" class="nav_list">
                             	<a href="/dict/cate/index/1"></a>
            </li>
         	                    		<li id="nav_3" class="nav_list">
                             	<a href="/dict/cate/index/76"></a>
            </li>
         	                    		<li id="nav_4" class="nav_list">
                             	<a href="/dict/cate/index/96"></a>
            </li>
         	                    		<li id="nav_5" class="nav_list">
                             	<a href="/dict/cate/index/127"></a>
            </li>
         	                    		<li id="nav_6" class="nav_list">
                             	<a href="/dict/cate/index/132"></a>
            </li>
         	                    		<li id="nav_7" class="nav_list">
                             	<a href="/dict/cate/index/436"></a>
            </li>
         	                    		<li id="nav_8" class="nav_list">
                             	<a href="/dict/cate/index/154"></a>
            </li>
         	                    		<li id="nav_9" class="nav_list">
                             	<a href="/dict/cate/index/389"></a>
            </li>
         	                    		<li id="nav_10" class="nav_list">
                             	<a href="/dict/cate/index/367"></a>
            </li>
         	                    		<li id="nav_11" class="nav_list">
                             	<a href="/dict/cate/index/31"></a>
            </li>
         	                    		<li id="nav_12" class="nav_list">
                             	<a href="/dict/cate/index/403"></a>
            </li>'''

p=r'<li id=.*?class=.*?>[\s\S]*?<a href="(.*?)"></a>[\s\S]*?</li>'
flurl=re.findall(p, fls)
qg='''
<tbody>
                                    	<tr>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/180">北京</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/306">上海</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/324">天津</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/354">重庆</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/168">安徽</a>
                                                    </div>
                                                </td>
                                                                                                	                                </tr><tr>
                                                            	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/174">澳门</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/186">福建</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/192">甘肃</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/198">广东</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/204">广西</a>
                                                    </div>
                                                </td>
                                                                                                	                                </tr><tr>
                                                            	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/210">贵州</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/216">海南</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/222">河北</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/228">河南</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/234">黑龙江</a>
                                                    </div>
                                                </td>
                                                                                                	                                </tr><tr>
                                                            	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/240">湖北</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/246">湖南</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/252">吉林</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/258">江苏</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/264">江西</a>
                                                    </div>
                                                </td>
                                                                                                	                                </tr><tr>
                                                            	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/270">辽宁</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/276">内蒙古</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/554">宁夏</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/282">青海</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/288">山东</a>
                                                    </div>
                                                </td>
                                                                                                	                                </tr><tr>
                                                            	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/294">山西</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/300">陕西</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/312">四川</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/318">台湾</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/330">香港</a>
                                                    </div>
                                                </td>
                                                                                                	                                </tr><tr>
                                                            	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/336">新疆</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/555">西藏</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/342">云南</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/348">浙江</a>
                                                    </div>
                                                </td>
                                                                                                    	                            <td>
                                                                                                        <div class='cate_no_child citylistcate select_now'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/360">全国</a>
                                                    </div>
                                                </td>
                                                                                                	                                </tr><tr>
                                                            	                            <td>
                                                                                                        <div class='cate_no_child citylistcate no_select'>
                                                                                            	            <a class='citylist' href="/dict/cate/index/366">国外地名</a>
                                                    </div>
                                                </td>
                                        				                        </tr>
                                   </tbody>
'''

p0=r'<a class=.*?href="(.*?)">.*?</a>'
qgurl=re.findall(p0, qg)
#常规
def xr(zw):
    with open('./sgdic.txt','a+')as f:
        f.write(zw)
        f.close()


#<li><span><a href="/dict/cate/index/360/default/2">下一页</a></span></li>
#找出下一页然后请求
#判断还有没有下一页,没有就终止
for i in flurl:
    zw=requests.get(murl+i,headers=hd,timeout=30)
    p2=r'<li><span><a href="(\S+?)">下一页</a></span></li>'
    fy=re.findall(p2, zw.text)
    xr(zw.text)
    #循环获取下一页
    while True:
        if len(fy)>0:
            zw=requests.get(murl+fy[0],headers=hd,timeout=30)
            p2=r'<li><span><a href="(\S+?)">下一页</a></span></li>'
            fy=re.findall(p2, zw.text)
            xr(zw.text)
            print(fy)
        else:
            break
#全国
for i in qgurl:
    zw=requests.get(murl+i,headers=hd,timeout=30)
    p2=r'<li><span><a href="(\S+?)">下一页</a></span></li>'
    fy=re.findall(p2, zw.text)
    xr(zw.text)
    while True:
        if len(fy)>0:
            zw=requests.get(murl+fy[0],headers=hd,timeout=30)
            p2=r'<li><span><a href="(\S+?)">下一页</a></span></li>'
            fy=re.findall(p2, zw.text)
            xr(zw.text)
            print(fy)
        else:
            break

print('下载完成下面提取下载链')
sg=open('./sgdic.txt').read()
p3=r'<div class="dict_dl_btn"><a href="(.*?)"></a></div>'
d=re.findall(p3, sg)
for l in d:
    with open('./lianjie.txt','a+')as f:
        f.write(l+'\n')
        f.close()
print('分析完成')
cherub0507 发表于 2021-4-30 16:36
zzq027 发表于 2021-5-15 18:04
蓝奏链接打不开。
搜索了下
把http://lanzous.com改成http://lanzoui.com就可以了。
fanvalen 发表于 2021-4-30 15:51
你发的太迟了前段时间我已经爬完了
v12345676 发表于 2021-4-30 16:02
收藏备用了,谢谢楼主
fanvalen 发表于 2021-4-30 16:10
fanvalen 发表于 2021-4-30 16:06
[mw_shl_code=python,true]# -*- coding: utf-8 -*-
'''
envs=python3.8.5

这个只是获取下载连接不下载,自己导入idm 迅雷刷刷完成
cherub0507 发表于 2021-4-30 16:14
下载下来以后文件是什么格式的?
 楼主| 千城忆梦 发表于 2021-4-30 16:16
cherub0507 发表于 2021-4-30 16:14
下载下来以后文件是什么格式的?

scel格式
lye123456 发表于 2021-4-30 16:27
词库习惯用自己建立的
cyberim 发表于 2021-4-30 16:45
五笔能用吗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-29 02:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表