찾다
백엔드 개발파이썬 튜토리얼Python 크롤러를 사용하여 자녀에게 좋은 이름을 지어주세요

서문

아이가 태어난 후 2주 이내에 이름을 정해야 하기 때문에 부모님이라면 누구나 한 번쯤 경험해보셨을 거라 믿습니다. (출생증명서 신청 필수) ..저도 그랬나봐요. 처음엔 엄청 헷갈렸어요. 한자가 너무 많다고 느꼈는데, 아무 글자나 골라서 이름을 지을 수 있었거든요. 아무리 생각해도 부적절하다는 생각이 들어서 사전을 찾아보고, 당시, 노래 가사, 시집, 심지어 무협소설까지 찾아봤습니다. 오랫동안 고민해온 이름은 이름 발음의 어려움, 친족의 이름과 사투리가 같은 문제 등 가족들의 의견과 반대에 자주 부딪히게 됩니다. 검색과 거부를 반복하는 사이클에 빠져들고, 점점 더 혼란스러워지고 있습니다.

그래서 인터넷에 다시 검색해보니 "좋은 남자아이 이름 전체 목록"과 같은 많은 기사가 한꺼번에 나와 있었습니다. 사용. 이름을 테스트하는 웹사이트나 앱이 많이 있습니다. 이름을 입력하면 8자 또는 5자 등급을 얻을 수 있습니다. 이 기능은 상당히 좋으며 참고로 사용할 수 있습니다. 그러나 이름을 하나 입력해야 합니다. 테스트를 위해 하나씩 테스트하거나 이러한 웹 사이트나 앱에는 이름이 거의 없으며 한정 단어와 같은 요구 사항을 충족할 수 없거나 비용이 청구되기 시작하여 결국 유용한 항목을 찾을 수 없습니다.

그래서 저는 다음과 같은 프로그램을 만들고 싶었습니다.

  1. 주요 기능은 배치 이름에 대한 참조를 제공하는 것입니다. 아기 이름 생년월일과 별자리를 기준으로 계산됩니다.

  2. 예를 들어, 노래 책에서 좋은 이름을 찾으면 이름 라이브러리를 확장할 수 있습니다. 인터넷에서 해당 이름을 추가하여 사용할 수 있습니다.

  3. 예를 들어 일부 가계도에는 제한이 있습니다. 현재 "國" 문자가 있는 세대에 속해 있는 경우 이름에는 "國" 문자가 있어야 합니다.

  4. 이름 목록에 점수를 부여할 수 있으므로 반전 후 볼 수 있습니다. 높은 점수부터 낮은 점수까지 이름에서

이런 방법으로 사본을 얻을 수 있습니다. 자녀의 생년월일, 가계도와 일치하는 이름 목록이 있습니다. 제한 사항과 선호도, 그리고 목록에 참고용으로 점수가 주어져 있으며 이를 바탕으로 하나씩 알아내서 마음에 드는 이름을 찾을 수 있습니다. 물론, 새로운 아이디어가 있으면 언제든지 어휘에 새로운 이름을 추가하고 다시 계산할 수 있습니다.

프로그램 코드 구조

Python 크롤러를 사용하여 자녀에게 좋은 이름을 지어주세요

코드 소개:

  • /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를 열고 구성 항목은 다음 섹션을 참조하세요.

    get_name_score.py 스크립트 실행
  4. outputs 디렉터리에서 정렬 및 기타 작업을 위해 Excel에 복사할 수 있는 자체 출력 파일을 확인하세요.

  5. 프로그램 구성 진입

프로그램 구성은 다음과 같습니다.

# coding:GB18030
 
"""
在这里写好配置
"""
 
setting = {}
 
# 限定字,如果配置了该值,则会取用单字字典,否则取用多字字典
setting["limit_world"] = "国"
# 姓
setting["name_prefix"] = "李"
# 性别,取值为 男 或者 女
setting["sex"] = "男"
# 省份
setting["area_province"] = "北京"
# 城市
setting["area_region"] = "海淀"
# 出生的公历年份
setting['year'] = "2017"
# 出生的公历月份
setting['month'] = "1"
# 出生的公历日子
setting['day'] = "11"
# 出生的公历小时
setting['hour'] = "11"
# 出生的公历分钟
setting['minute'] = "11"
# 结果产出文件名称
setting['output_fname'] = "names_girls_source_xxx.txt"

구성 항목

에 따라 단일 문자 사전을 사용할지, 다 문자 사전을 사용할지 시스템이 자동으로 결정합니다.

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

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

程序的原理

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

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

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

 post_data = urllib.urlencode(params)
 req = urllib2.urlopen(sys_config.REQUEST_URL, post_data)
 content = req.read()

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

params的参数设定如下:

 params = {}
 
 # 日期类型,0表示公历,1表示农历
 params['data_type'] = "0"
 params['year'] = "%s" % str(user_config.setting["year"])
 params['month'] = "%s" % str(user_config.setting["month"])
 params['day'] = "%s" % str(user_config.setting["day"])
 params['hour'] = "%s" % str(user_config.setting["hour"])
 params['minute'] = "%s" % str(user_config.setting["minute"])
 params['pid'] = "%s" % str(user_config.setting["area_province"])
 params['cid'] = "%s" % str(user_config.setting["area_region"])
 # 喜用五行,0表示自动分析,1表示自定喜用神
 params['wxxy'] = "0"
 params['xing'] = "%s" % (user_config.setting["name_prefix"])
 params['ming'] = name_postfix
 # 表示女,1表示男
 if user_config.setting["sex"] == "男":
  params['sex'] = "1"
 else:
  params['sex'] = "0"
  
 params['act'] = "submit"
 params['isbz'] = "1"

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

 soup = BeautifulSoup(content, 'html.parser', from_encoding="GB18030")
 full_name = get_full_name(name_postfix)
 
 # print soup.find(string=re.compile(u"姓名五格评分"))
 for node in soup.find_all("p", class_="chaxun_b"):
  node_cont = node.get_text()
  if u'姓名五格评分' in node_cont:
   name_wuge = node.find(string=re.compile(u"姓名五格评分"))
   result_data['wuge_score'] = name_wuge.next_sibling.b.get_text()
  
  if u'姓名八字评分' in node_cont:
   name_wuge = node.find(string=re.compile(u"姓名八字评分"))
   result_data['bazi_score'] = name_wuge.next_sibling.b.get_text()

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

运行结果事例

1/1287 李国锦 姓名八字评分=61.5 姓名五格评分=78.6 总分=140.1
2/1287 李国铁 姓名八字评分=61 姓名五格评分=89.7 总分=150.7
3/1287 李国晶 姓名八字评分=21 姓名五格评分=81.6 总分=102.6
4/1287 李鸣国 姓名八字评分=21 姓名五格评分=90.3 总分=111.3
5/1287 李柔国 姓名八字评分=64 姓名五格评分=78.3 总分=142.3
6/1287 李国经 姓名八字评分=21 姓名五格评分=89.8 总分=110.8
7/1287 李国蒂 姓名八字评分=22 姓名五格评分=87.2 总分=109.2
8/1287 李国登 姓名八字评分=21 姓名五格评分=81.6 总分=102.6
9/1287 李略国 姓名八字评分=21 姓名五格评分=83.7 总分=104.7
10/1287 李国添 姓名八字评分=21 姓名五格评分=81.6 总分=102.6
11/1287 李国天 姓名八字评分=22 姓名五格评分=83.7 总分=105.7
12/1287 李国田 姓名八字评分=22 姓名五格评分=93.7 总分=115.7

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

友情提示

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

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

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

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

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

本文的代码已上传到github 

更多Python 크롤러를 사용하여 자녀에게 좋은 이름을 지어주세요相关文章请关注PHP中文网!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
파이썬 어레이에서 수행 할 수있는 일반적인 작업은 무엇입니까?파이썬 어레이에서 수행 할 수있는 일반적인 작업은 무엇입니까?Apr 26, 2025 am 12:22 AM

PythonArraysSupportVariousOperations : 1) SlicingExtractsSubsets, 2) 추가/확장 어드먼트, 3) 삽입 값 삽입 ATSpecificPositions, 4) retingdeletesElements, 5) 분류/ReversingChangesOrder 및 6) ListsompectionScreateNewListSbasedOnsistin

어떤 유형의 응용 프로그램에서 Numpy Array가 일반적으로 사용됩니까?어떤 유형의 응용 프로그램에서 Numpy Array가 일반적으로 사용됩니까?Apr 26, 2025 am 12:13 AM

NumpyArraysareSentialplosplicationSefficationSefficientNumericalcomputationsanddatamanipulation. Theyarcrucialindatascience, MachineLearning, Physics, Engineering 및 Financeduetotheiribility에 대한 handlarge-scaledataefficivally. forexample, Infinancialanyaly

파이썬의 목록 위의 배열을 언제 사용 하시겠습니까?파이썬의 목록 위의 배열을 언제 사용 하시겠습니까?Apr 26, 2025 am 12:12 AM

UseanArray.ArrayOveralistInpyThonWhendealingwithhomogeneousData, Performance-CriticalCode, OrinterFacingwithCcode.1) HomogeneousData : ArraysSaveMemorywithtypepletement.2) Performance-CriticalCode : arraysofferbetterporcomanceFornumericalOperations.3) Interf

모든 목록 작업은 배열에 의해 지원됩니까? 왜 또는 왜 그렇지 않습니까?모든 목록 작업은 배열에 의해 지원됩니까? 왜 또는 왜 그렇지 않습니까?Apr 26, 2025 am 12:05 AM

아니요, NOTALLLISTOPERATIONARESUPPORTEDBYARRARES, andVICEVERSA.1) ArraySDONOTSUPPORTDYNAMICOPERATIONSLIKEPENDORINSERTWITHUTRESIGING, WHITHIMPACTSPERFORMANCE.2) ListSDONOTEECONSTANTTIMECOMPLEXITEFORDITITICCESSLIKEARRAYSDO.

파이썬 목록에서 요소에 어떻게 액세스합니까?파이썬 목록에서 요소에 어떻게 액세스합니까?Apr 26, 2025 am 12:03 AM

ToaccesselementsInapyThonlist, 사용 인덱싱, 부정적인 인덱싱, 슬라이스, 오리 화.

어레이는 파이썬으로 과학 컴퓨팅에 어떻게 사용됩니까?어레이는 파이썬으로 과학 컴퓨팅에 어떻게 사용됩니까?Apr 25, 2025 am 12:28 AM

Arraysinpython, 특히 비밀 복구를위한 ArecrucialInscientificcomputing.1) theaRearedFornumericalOperations, DataAnalysis 및 MachinELearning.2) Numpy'SimplementationIncensuressuressurations thanpythonlists.3) arraysenablequick

같은 시스템에서 다른 파이썬 버전을 어떻게 처리합니까?같은 시스템에서 다른 파이썬 버전을 어떻게 처리합니까?Apr 25, 2025 am 12:24 AM

Pyenv, Venv 및 Anaconda를 사용하여 다양한 Python 버전을 관리 할 수 ​​있습니다. 1) PYENV를 사용하여 여러 Python 버전을 관리합니다. Pyenv를 설치하고 글로벌 및 로컬 버전을 설정하십시오. 2) VENV를 사용하여 프로젝트 종속성을 분리하기 위해 가상 환경을 만듭니다. 3) Anaconda를 사용하여 데이터 과학 프로젝트에서 Python 버전을 관리하십시오. 4) 시스템 수준의 작업을 위해 시스템 파이썬을 유지하십시오. 이러한 도구와 전략을 통해 다양한 버전의 Python을 효과적으로 관리하여 프로젝트의 원활한 실행을 보장 할 수 있습니다.

표준 파이썬 어레이를 통해 Numpy Array를 사용하면 몇 가지 장점은 무엇입니까?표준 파이썬 어레이를 통해 Numpy Array를 사용하면 몇 가지 장점은 무엇입니까?Apr 25, 2025 am 12:21 AM

Numpyarrayshaveseveraladvantagesstandardpythonarrays : 1) thearemuchfasterduetoc 기반 간증, 2) thearemorememory-refficient, 특히 withlargedatasets 및 3) wepferoptizedformationsformationstaticaloperations, 만들기, 만들기

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.