现在的取名网站基本都收费了,直接输入生辰八字就无限查询的时代没有了。但还好,有些网站还能免费给姓名评分,至于评分原理我不懂,满分100分,分越高名字越好。这次我就是用python抓取了评分网站的数据,快速完成取名评分的。具体如下:
1、首先生成一堆意向姓名
这个去网上一搜一大堆,比如:“2019热门女孩姓名”,随便找个搜索结果看看。
把这些名字复制到一个文本文件,进过查找、替换,转换成如下样式:
2、找一个能姓名评分的网站
我找到了这个网站:http://www.guabu.com/xingming/
输入姓名,点 姓名打分
查询结果很多,包括天地人三格和外格总格等评分,姓名吉凶等等,这次还不专注这些,只看最后的一个总分
这个分数代表姓名的好坏,分越高越好。这是人的心里作祟,只要分高就行,至于分怎么来的,只告诉他们很玄妙就行了。
3、分析网页结构
首先得分析下这个网页,这个查询是用get方式传递的。
再看查询结果,在查询结果页面,在评分字符上右击,选择“检查”,打开开发者选项
此时看到评分数据被包括在加了属性的font标签中。
4、搬出Python,抓取数据
先上代码,逐个解释
首先导库:
requests:负责发送html请求及接收数据
time:在这只用了sleep函数做个定时器
lxml:负责对取回的html文档进行xml格式化,方便查找数据
把所有姓名,放入一个list中
然后用for循环遍历没一个姓名
requests.get方法可以获得html的完整对象,html.text返回html的内容,第17行用etree对象转换html为xml格式,第18行用etree对象的xpath方法定位元素位置,此处的xpath是xml的一种标准,本例中的意思是:查找设置了size=15的font标签,后面的/text()表示获取这个标签内的数据。
返回值放到一个list中,用print打印出来。
为了防止访问过于频繁对目标服务器造成影响,用time.sleep(3)函数设置了3秒暂停。
5、执行结果
如果评分不行,就再找一堆名字来测试吧,就这样。