Maison >développement back-end >Tutoriel Python >Exemple de code d'implémentation du robot d'exploration Python pour prendre des noms
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 :
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
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
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 "国"
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 :
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
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
Ouvrez user_config.py et configurez-la ; . Voir la section suivante pour les éléments de configuration
Exécutez le script get_name_score.py
.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 :
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
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.7Avec ces scores, on peut les trier, ce qui est une référence très pratique.
Rappel amical
sur git
[Recommandations associées]
Tutoriel vidéo gratuit Python2. 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!