怎样借助Python爬虫给宝宝起个好名字

640?wx_fmt=gif


Beginning

每个人一生中都会遇到一件事情,在事情出现之前不会关心,但是事情一旦来临就发现它极其重要,并且需要在很短的时间内做出重大决定,那就是给自己的新生宝宝起个名字。


因为要在孩子出生后两周内起个名字(需要办理出生证明了),估计很多人都像我一样,刚开始是很慌乱的,虽然感觉汉字非常的多随便找个字做名字都行,后来才发现真不是随便的事情,怎么想都发现不合适,于是到处翻词典、网上搜、翻唐诗宋词、诗经、甚至武侠小说,然而想了很久得到的名字,往往却受到家属的意见和反对,比如不顺口、和亲戚重名重音等问题,这样就陷入了重复寻找和否定的循环,越来越混乱。



于是我们再次回到网上各种搜索,找到很多网上给出的“男宝宝好听的名字大全”之类的文章,这些文章一下子给出几百上千个名字,看的眼花缭乱没法使用。而有不少的测名字的网站或者APP,输入名字能给出八字或者五格的评分,这样的功能感觉还挺好的能给个参考,然而要么我们需要一个个名字的输入进行测试、要么这些网站或者APP自身的名字很少、要么不能满足我们的需求比如限定字、要么就开始收费,到最后也找不到一个好用的。


于是我想做这么一个程序:


  1. 主要的功能,是给出批量名字提供参考,这些名字是结合宝宝的生辰八字算出来的;

  2. 自己可以扩充名字库,比如网上发现了一批诗经里的好名字,想看看怎么样,添加进去就能用;

  3. 可以限定名字的使用字,比如有的家族谱有限定,当前是“国”字辈,名字中必须有“国”字;

  4. 名字列表可以给出评分,这样倒排后就可以从高分往低分来看名字;


通过这种方式可以得到一份符合自己孩子生辰八字、自己的家谱限制、以及自己喜好的名字列表,并且该列表已经给出了分数用于参考,以此为基准我们可以挨个琢磨找出心仪的名字。当然如果有新的想法,随时可以把新的名字添加到词库里面,进行重新计算。


程序的代码结构



640?wx_fmt=png


代码介绍:


/chinese-name-score 代码根目录

/chinese-name-score/main 代码目录

/chinese-name-score/main/dicts 词典文件目录

/chinese-name-score/main/dicts/names_boys_double.txt 词典文件,男孩的双字名字

/chinese-name-score/main/dicts/names_boys_single.txt 词典文件,男孩的单字名字

/chinese-name-score/main/dicts/names_girls_single.txt 词典文件,女孩的双字名字

/chinese-name-score/main/dicts/names_grils_double.txt 词典文件,女孩的单字名字

/chinese-name-score/main/outputs 输出数据目录

/chinese-name-score/main/outputs/names_girls_source_wxy.txt 输出的示例文件

/chinese-name-score/main/scripts 一些对词典文件做预处理的脚本

/chinese-name-score/main/scripts/unique_file_lines.py 设定词典文件,对词典中的名字去重和去空白行

/chinese-name-score/main/sys_config.py 程序的系统配置,包含爬取得目标URL、词典文件路径

/chinese-name-score/main/user_config.py 程序的用户配置,包括宝宝的年月日时分性别等设定

/chinese-name-score/main/get_name_score.py 程序的运行入口


使用代码的方法:


1如果没有限定字,就找到词典文件names_boys_double.txt和names_grils_double.txt,可以在这里添加自己找到的一些名字列表,按行分割添加在最后即可;

2如果有限定字,就找到词典文件names_boys_single.txt和names_girls_single.txt,在这里添加自己预先中意的单个字列表,按行分割添加在最后即可;

3打开user_config.py,进行配置,配置项见下一节;

4运行脚本get_name_score.py

5在outputs目录中,查看自己的产出文件,可以复制到Excel,进行排序等操作;


程序的配置入口


程序的配置如下:

640?wx_fmt=png


根据配置项setting[“limit_world”],系统自动来决定选用单字词典还是多字词典:


如果设置了该项,比如等于“国”,那么程序会组合所有的单字为名字用于计算,比如国浩和浩国两个名字都会计算;

如果不设置该项,保持空字符串,则程序只会读取*_double.txt的双字词典


程序的原理


这是一个简单的爬虫。大家可以打开http://life.httpcn.com/xingming.asp网站查看,这是一个POST表单,填写需要的参数,点提交,就会打开一个结果页面,结果页面的最下方包含了八字分数和五格分数。


如果想得到分数,就需要做两件事情,一是爬虫自动提交表单,获取结果页面;二是从结果页面提取分数;


对于第一件事情,很简单,urllib2即可实现(代码在/chinese-name-score/main/get_name_score.py):


640?wx_fmt=png


这里的params是个参数dict,使用这种方式,就进行了POST带数据的提交,然后从content得到了结果数据。


params的参数设定如下:


640?wx_fmt=png


第二件事情,就是从网页中提取需要的分数,我们可以使用BeautifulSoup4来实现,其语法也很简单:


640?wx_fmt=png


通过该方法,就能对HTML解析,提取八字和五格的分数。


运行结果事例


640?wx_fmt=png


有了这些分数,我们就可以进行排序,是一个很实用的参考资料。


友情提示


1、分数跟很多因素有关,比如出生时刻、已经限定的字、限定字的笔画等因素,这些条件决定了有些名字不会分数高,不要受此影响,找出相对分数高的就可以了;

2、目前程序只能抓取一个网站的内容,地址是http://life.httpcn.com/xingming.asp

3、本列表仅供参考,看过一些文章,历史上很多名人伟人,姓名八字评分都非常低但是都建功立业,名字确实会有些影响但有时候朗朗上口就是最好的;

4、从本列表中选取名字之后,可以在百度、人人网等地方查查,以防有些负面的人重名、或者起这个名字的人太多了烂大街;

5、八字分数是中国传承,五格分数是日本人近代发明的,有时候也可以试试西方的星座起名法,并且奇怪的是八字和五个分数不同网站打分相差很大,更说明了这东西只供参考;


本文的代码已上传到github:

https://github.com/peiss/chinese-name-score


来源:

http://www.crazyant.net/2076.html

文章版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请留言联系删除,感谢合作。


数据与算法之美

用数据解决不可能


640?wx_fmt=jpeg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CAP-分布式事务的解决方案

CAP 是一个基于 .NET Standard 的 C# 库,它是一种处理分布式事务的解决方案,同样具有 EventBus 的功能,它具有轻量级、易使用、高性能等特点。https://github.com/dotnetcore/CAP在我们构建 SOA 或者 微服务系统的过程中,我们通常…

我是怎么用机器学习技术找到女票的

机器学习在我们生活中的用处有多大,就不用我们多说了,大到医疗诊断,小到手机应用,机器学习都应用的风风火火。但是用机器学习帮自己在学校找对象,你听说过吗?最近滑铁卢大学一位叫 Bai Li 的留学生(李白?应是中国同胞…

php 重定向数据不丢失,PHP重定向如何实现数据不丢失?

PHP重定向如何实现数据不丢失?首先获取要保存的数据;$data [username > guanhuicoder,redirect_url > ./index.phpemail > guanhuicodercode.com];然后将数据转为JSON字符串,并将其储存在Session中;$data [username &g…

北大教授郑也夫斗胆谈了7个天大的问题(非常狠,也很现实)

我是一个小人物,今天斗胆谈一个天大的问题——中国教育。中国教育是一个天大的问题,不是说我们有多大的本领把它办得多么好,而是我们居然可以把它办得这样糟,这是一个很沉痛的话题。——北大教授、社会学家郑也夫1不输在起跑线&am…

.NET 6 Preview 3 中 ASP.NET Core 的更新和改进

原文:bit.ly/2Qb56NP作者:Daniel Roth译者:精致码农-王亮.NET 6 预览版 3 现已推出,其中包括许多对新的 ASP.NET Core 改进。以下是本次预览版的新内容:更小的 SignalR、Blazor Server、MessagePack 脚本文件启用 Redi…

php 图片消除锯齿,ps如何消除边缘锯齿

PS消除边缘锯齿的方法:打开图片选择魔棒工具,在窗口中解锁图层然后将鼠标移动到背景区域,左键单击它再按删除键,然后再右键点击人像,选择羽化,将羽化半径设置为4,点击确定后按删除键&#xff0c…

C#如何在Windows中操作IIS设置FTP服务器

什么是FTPFTP(File Transfer Protocol)是TCP/IP网络上两台计算机传送文件的协议,使得主机间可以共享文件.可以将 Internet 信息服务 (IIS) 配置为作为 FTP 服务器来运行。 这样,其他计算机便可以连接到服务器并将文件复制到服务器或者从服务器复制文件。…

这是一份编程宝典,请查收!

最近,小编一直在整理有关编程的书籍,有Android、C、Java、PHP、木马、算法等类型的书籍。现在,小编准备将这些资料免费分享给大家!Android应用开发入门教程(经典版)易学CC语言解惑HTML入门教程Java解惑&…

近期资料分享汇总,还不快来看看你漏了哪份没拿?

相信,一直关注着我们的同学们都知道,小思妹分享了好多好多的资料给大家。为了方便新来的同学自取,小思妹又重新整理了一遍,直接点以下标题即可跳转!这是我见过的最全的训练数据集,没有之一!送你…

MS Learn 宝藏资源库 - 学习经验分享

点击蓝字关注我们作者:刘轶民大家好,我是东北电力大学的一名在校学生,我叫刘轶民,很高兴能以 MS Learn 的受益者的身份,来分享一些经验与看法。作为正在上学的我来讲,很多时候我可能更多的去面临着新技术的…

你必须知道的28个HTML5特征、窍门和技术

Jeffrey Way曾发表过一篇博文《28 HTML5 Features, Tips, and Techniques you Must Know 》讲述了28个HTML5特征、窍门和技术,张鑫旭将本文进行了翻译,现转载于此,全文如下:前端的发展如此之迅猛,一不留神,…

一起读懂传说中的经典:受限玻尔兹曼机

尽管性能没有流行的生成模型好,但受限玻尔兹曼机还是很多读者都希望了解的内容。这不仅是因为深度学习的复兴很大程度上是以它为前锋,同时它那种逐层训练与重构的思想也非常有意思。本文介绍了什么是受限玻尔兹曼机,以及它的基本原理&#xf…

NET问答: 发布 asp.net core 时如何修改 ASPNETCORE_ENVIRONMENT 环境变量?

咨询区 Dario:当我把 asp.net core web 发布到本地文件时,我发现程序读的是 appsettings.Production.json ,也就说明当前的 ASPNETCORE_ENVIRONMENT Production。请问如何动态修改 ASPNETCORE_ENVIRONMENT 的值,这样的话在 调试 和 发布 阶段…

注释里的诅咒:哪种语言遭受最多的咒骂?

导读:原文作者Scott Gilbertson在webmonkey.com发表一篇《Cussing in Commits: Which Programming Language Inspires the Most Swearing?》,由外刊IT评论整理翻译《注释里的诅咒:哪种语言遭受最多的咒骂?》。内容如下:任何一个程…

怎样快速掌握深度学习TensorFlow框架?

TensorFlow是Google基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow实际上就是张量从流…

牛X,.NET6又双叒叕新版本,这是要起飞吗?

.NET6又双叒叕出新版本了,2月17号Preview1、3月11号Preview2、4月8号又Preview3了,密集的版本发布,各种新技术和改进优化,不禁要问一句,.NET6是要起飞吗?下面给大家科普下.NET6将带来的几大核心变化&#x…

用python挖一挖知乎上宅男们最喜欢的1000个妹子

在文章开始前,先来一张图给大家热热身。这里是宅男们最喜欢的妹子中排名前200位的头像(实际193张图,部分不规则的图已被二胖过滤)。排名不分先后哈!快来看看有没有你们熟悉的面孔。找到眼熟的人了吗?说不定…

在 .NET 6 Preview 3 ASP.NET Core 更新

.NET 6 Preview 3现在可用了,其中包括对ASP.NET Core的许多重大改进。这是此预览版本中的新增功能:更小的SignalR,Blazor Server和MessagePack scripts启用 Redis 分析会话HTTP/3 endpoint TLS配置初版的 .NET Hot Reload 支持Razor编译器不再…

趣图:程序员桌面对比,iOS vs 安卓

程序员桌面对比,iOS vs 安卓↓↓↓数据与算法之美用数据解决不可能长按扫码关注

如何在 ASP.Net Core 中使用 HTTP.sys WebServer ?

ASP.Net Core 是一个开源的,跨平台的,轻量级模块化框架,可用它来构建高性能的Web程序,大家都知道 Kestrel 是 ASP.Net Core 内置的跨平台web服务器,但是它有一定的局限性,比如不支持 端口共享 , WebSockets…