采集内容插入词库(搜狗细胞词库:Python实现思路1.获取大分类列表(组图))

优采云 发布时间: 2021-09-08 05:21

  采集内容插入词库(搜狗细胞词库:Python实现思路1.获取大分类列表(组图))

  Python搜狗词库介绍批量下载

  搜狗的细胞词库是一个开放共享的词库,采集了很多网友提交的词信息。从搜狗细胞词库首页的最新数据来看,19520名网友共创建了27695个词库。 48482247 个条目。当然,我下载了之后,并没有计算有没有这么多条目。有兴趣的朋友可以试试。接下来简单讲解一下如何批量下载搜狗词库。 (我看了看,好像下载的没那么多),这篇文章就是分析一下我的想法,完整程序请进:

  Python实现思路1.获取大类列表

  首先观察搜狗细胞词库的网站,如下图:

  

  首页有词库分类,这样问题就转化为下载每个分类下的词库了。随机选择一个词库,点击进入观察(我选择第一个),如下图:

  

  这里我们找到了搜狗细胞词库的十二大类:

  “城市信息”、“自然科学”、“社会科学”、“工程应用”、“农林渔业和畜牧业”、“医学”、“电子游戏”、“艺术设计”、“百科全书” 《生活》、《运动与休闲》、《人文》、《娱乐与休闲》

  写一个函数:

   def get_cate_1_list(res_html):

# 获取大分类链接

dict_cate_1_urls = []

soup = BeautifulSoup(res_html, "html.parser")

dict_nav = soup.find("div", id="dict_nav_list")

dict_nav_lists = dict_nav.find_all("a")

for dict_nav_list in dict_nav_lists:

dict_nav_url = "https://pinyin.sogou.com" + dict_nav_list['href']

dict_cate_1_urls.append(dict_nav_url)

return dict_cate_1_urls

  将上面页面的源码传给这个函数,我们就可以解析出十二大类对应的链接地址。

  2. 获取小类字典

  通过分析观察,我们可以发现“城市信息”类别下的子类别与其他11个类别下的子类别略有不同,如下图所示:

  

  

  因此,这里我们要写两个方法来解析和获取小类别:

   def get_cate_2_1_list(res_html):

# 获取第一种小分类链接

dict_cate_2_1_dict = {}

soup = BeautifulSoup(res_html, "html.parser")

dict_td_lists = soup.find_all("div", class_="cate_no_child citylistcate no_select")

for dict_td_list in dict_td_lists:

dict_td_url = "https://pinyin.sogou.com" + dict_td_list.a['href']

dict_cate_2_1_dict[dict_td_list.get_text().replace("\n", "")] = dict_td_url

return dict_cate_2_1_dict

def get_cate_2_2_list(res_html):

# 获取第二种小分类链接

dict_cate_2_2_dict = {}

soup = BeautifulSoup(res_html, "html.parser")

dict_td_lists = soup.find_all("div", class_="cate_no_child no_select")

# 类型1解析

for dict_td_list in dict_td_lists:

dict_td_url = "https://pinyin.sogou.com" + dict_td_list.a['href']

dict_cate_2_2_dict[dict_td_list.get_text().replace("\n", "")] = dict_td_url

# 类型2解析

dict_td_lists = soup.find_all("div", class_="cate_has_child no_select")

for dict_td_list in dict_td_lists:

dict_td_url = "https://pinyin.sogou.com" + dict_td_list.a['href']

dict_cate_2_2_dict[dict_td_list.get_text().replace("\n", "")] = dict_td_url

return dict_cate_2_2_dict

  其中,你会发现为什么第二个函数中多了两个类型?这里的原因是有一些小类别和他们自己的小类别。有些有,有些没有,这导致需要分别解决两种类型的子类别。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线