Maison >développement back-end >Tutoriel Python >Exemple de code d'implémentation du robot d'exploration Python pour prendre des noms

Exemple de code d'implémentation du robot d'exploration Python pour prendre des noms

Y2J
Y2Joriginal
2017-05-10 11:42:164868parcourir

Tout le monde rencontrera une chose dans sa vie. Ils ne s'en soucient pas avant qu'elle n'apparaisse, mais une fois qu'elle arrive, ils trouvent qu'elle est extrêmement importante et nécessite qu'une décision majeure soit prise dans un court laps de temps. C'est pour vous. Donnez un nom à votre nouveau-né. L'article suivant explique principalement comment utiliser le robot d'exploration Python pour donner un bon nom à votre enfant. Les amis dans le besoin peuvent s'y référer.

Avant-propos

Je crois que tous les parents en ont fait l'expérience, car il faut beaucoup de temps pour choisir un prénom dans les deux semaines qui suivent la naissance de l'enfant (un acte de naissance est obligatoire). Tout le monde est comme moi. Au début, j'étais très confus. Même si je pensais qu'il y avait tellement de caractères chinois, je pouvais simplement choisir n'importe quel caractère pour créer un nom. Mais plus tard, j'ai réalisé que ce n'était vraiment pas une chose fortuite. Peu importe ce que j'y pensais, j'ai trouvé que c'était inapproprié, alors j'ai cherché et lu de la poésie Tang, des paroles de chansons, le Livre des Chansons et même des romans d'arts martiaux. Je réfléchis depuis longtemps et je rencontre souvent les opinions et les objections des membres de ma famille, tels que des problèmes tels que des difficultés à parler et le même accent que le nom des proches. De cette façon, je tombe dans un cycle de répétition. recherches et dénégations. Le cycle devient de plus en plus confus.

Nous sommes donc retournés sur Internet pour rechercher et avons trouvé de nombreux articles sur Internet tels que "Une liste complète de bons prénoms de bébés garçons". Ces articles ont donné des centaines d'articles à la fois. Des milliers de noms sont trop vertigineux pour être utilisés. Il existe de nombreux sites Web ou applications qui testent les noms. Lorsque vous saisissez un nom, vous pouvez obtenir une note de huit ou cinq caractères. Cette fonction est assez efficace et peut être utilisée comme référence. Cependant, nous devons soit saisir un seul nom. par un pour les tests, ou Ces sites Web ou applications ont très peu de noms, soit ne peuvent pas répondre à nos besoins tels que les mots qualificatifs, soit ils commencent à charger, et à la fin nous n'en trouvons aucun utile.

Je voulais donc créer un programme comme celui-ci :

  1. La fonction principale est de fournir une référence pour les noms de lots, qui sont combinés avec le noms de bébé Il est calculé en fonction de la date de naissance et de l'horoscope

  2. Vous pouvez élargir votre bibliothèque de noms Par exemple, si vous trouvez un lot de bons noms dans le Livre des Chansons sur le. Internet et que vous souhaitez voir comment ils sont, vous pouvez les ajouter et les utiliser

  3. Vous pouvez limiter les caractères utilisés dans le nom. Par exemple, certains arbres généalogiques ont des restrictions si vous le souhaitez. sont actuellement dans la génération avec le caractère "国", le nom doit avoir le caractère "国"

  4. La liste de noms peut recevoir des scores, afin qu'après inversion, vous puissiez regarder aux noms des scores élevés aux scores faibles

De cette façon, vous pouvez en obtenir une copie. Il existe une liste de noms qui correspondent à la date de naissance de votre enfant, à votre arbre généalogique restrictions et vos préférences, et la liste a donné des scores pour référence. Sur cette base, nous pouvons les comprendre un par un pour trouver le nom que nous aimons. Bien sûr, si vous avez de nouvelles idées, vous pouvez à tout moment ajouter de nouveaux noms au vocabulaire et recalculer.

Structure du code du programme

Introduction au code :

  • /chinese-name-score Répertoire racine du code

  • /chinese-name-score/main Répertoire du code

  • /chinese-name-score/main/dicts Répertoire du fichier de dictionnaire

  • /chinese-name-score/main/dicts/names_boys_double.txt Fichier de dictionnaire, noms à deux lettres pour les garçons

  • /chinese-name-score/main/dicts/names_boys_single.txt Fichier de dictionnaire, noms à une seule lettre pour les garçons

  • /chinese- name-score/ main/dicts/names_girls_single.txt Fichier de dictionnaire, noms à deux lettres pour les filles

  • /chinese-name-score/main/dicts/names_grils_double.txt Fichier de dictionnaire, un -noms de lettres pour les filles

  • /chinese-name-score/main/outputs Répertoire de données de sortie

  • /chinese-name-score/main /outputs/names_girls_source_wxy.txt Exemples de fichiers de sortie

  • /chinese-name-score/main/scripts Quelques scripts pour le prétraitement des fichiers de dictionnaire

  • / Chinese-name -score/main/scripts/unique_file_lines.py Définit le fichier de dictionnaire pour supprimer la duplication et les lignes vides des noms dans le dictionnaire

  • /chinese -name -score/main/sys_config.py La configuration système du programme, y compris l'URL cible analysée et le chemin du fichier de dictionnaire

  • /chinese-name-score/main/user_config.py La configuration utilisateur du programme, y compris l'année, le mois, le jour, l'heure, le sexe et d'autres paramètres du bébé

  • /chinese-name-score/main/get_name_score.py Entrée en cours d'exécution du programme

Comment utiliser le code :

  1. S'il n'y a pas de qualificatifs, recherchez les fichiers du dictionnaire names_boys_double. txt et names_grils_double.txt, vous pouvez ajouter les vôtres ici. Pour certaines listes de noms trouvées, divisez-les simplement par ligne et ajoutez-les à la fin

  2. S'il y a des mots qualifiés, recherchez le ; fichiers de dictionnaire Names_boys_single.txt et Names_girls_single.txt, et ajoutez vos favoris ici. Une seule liste de mots peut être divisée par ligne et ajoutée à la fin

  3. Ouvrez user_config.py et configurez-la ; . Voir la section suivante pour les éléments de configuration

  4. Exécutez le script get_name_score.py

    .
  5. Dans le répertoire des sorties, affichez vos propres fichiers de sortie, qui peuvent être copiés dans Excel pour le tri et d'autres opérations

programme L'entrée de configuration du programme

est configurée comme suit :

# 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"

Selon l'élément de configuration setting[“limit_world”] , le système décide automatiquement d'utiliser un caractère unique dictionnaire ou un dictionnaire à plusieurs caractères :

  1. Si cet élément est défini, par exemple, s'il est égal à "国", alors le programme combinera tous les mots en noms pour le calcul . Par exemple, les noms Guohao et Haoguo seront calculés

  2. Si vous ne définissez pas cet élément et conservez la chaîne vide, le programme lira uniquement. le dictionnaire de mots doubles de *_double.txt

Principe du programme

Il s'agit d'un simple robot d'exploration. Vous pouvez ouvrir le site Web life.httpcn.com/xingming.asp pour le visualiser. Il s'agit d'un formulaire POST. Remplissez les paramètres requis et cliquez sur Soumettre. Une page de résultats s'ouvrira. score et le score de cinq images.

Si vous souhaitez obtenir des scores, vous devez faire deux choses. L'une consiste à soumettre automatiquement le formulaire au robot et à obtenir la page de résultats ; l'autre consiste à extraire les scores de la page de résultats ; >

Pour la première chose, c'est très simple, urllib2 peut l'implémenter (le code est dans /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()
Les paramètres ici sont un paramètre dict. En utilisant cette méthode, le POST avec les données est effectué Soumettre, puis obtenir les données de résultat du contenu. Les paramètres de

params sont définis comme suit :

 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"
La deuxième chose est d'extraire les scores requis de la page Web. Nous pouvons utiliser BeautifulSoup4 pour y parvenir, et sa syntaxe est la suivante. aussi très simple :

 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()
Grâce à cette méthode, le HTML peut être analysé et les partitions de huit caractères et cinq grilles peuvent être extraites.

Exemples de résultats en cours d'exécution

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
Avec ces scores, on peut les trier, ce qui est une référence très pratique.

Rappel amical

  1. Le score est lié à de nombreux facteurs, comme l'heure de naissance, les personnages limités, les coups des qualifiés caractères, etc. Ces conditions Il a été décidé que certains noms n'auraient pas de scores élevés, alors ne soyez pas affecté par cela, trouvez simplement ceux avec des scores relatifs élevés

  2. Actuellement ; le programme ne peut explorer que le contenu d'un seul site Web et l'adresse est http://life.httpcn.com/xingming.asp

  3. Cette liste est à titre de référence uniquement. certains articles. Il y a beaucoup de célébrités et de personnes formidables dans l'histoire. Leurs noms ont des notes très faibles mais ils ont tous fait de grandes réalisations, le nom a une certaine influence, mais parfois les mots accrocheurs sont les meilleurs

  4. Après avoir sélectionné le nom dans cette liste, vous pouvez le vérifier sur Baidu, Renren et d'autres endroits Juste au cas où certaines personnes négatives auraient le même nom, ou s'il y aurait trop de personnes avec ce nom
  5. La partition à huit caractères est héritée de la Chine, et la partition à cinq images a été inventée par les Japonais dans les temps modernes. Parfois, vous pouvez également essayer la méthode de dénomination du zodiaque occidental et, étrangement, les horoscopes et cinq. les scores sont très différents selon les sites Web, ce qui prouve en outre que cette chose est à titre de référence uniquement
  6. Le code de cet article a été
téléchargé

sur github Résumé

[Recommandations associées]

Tutoriel vidéo gratuit Python

2. Tutoriel vidéo Python rencontre la collecte de données

3 Manuel d'apprentissage Python

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn