誰もが人生で何かに遭遇するでしょう。それが起こる前は気にしませんが、それが起こると、それは非常に重要であり、短期間で大きな決断を下す必要があることがわかります。生まれたばかりの赤ちゃんに名前を付けよう。以下の記事では主にPythonクローラーを使って子供に良い名前を付ける方法を紹介していますので、困っている友達は参考にしてみてください。
はじめに
生まれてから2週間以内に名前を付けなければならないので(出生証明書が必要)、最初はとてもパニックになった人も多いと思います。漢字が多すぎて、どんな文字でも名前にできるような気がしましたが、どう考えてもそんなことはないことが後で分かりました。不適切だと思い、あちこちの辞書を調べたり、ネットで検索したり、唐宋の詩や宋書、さらには武侠小説まで読みました。しかし、長い間考えてきた名前は、しばしば意見や反対に遭遇します。名前の発音が難しい、親戚の名前とアクセントが同じなど、家族の名前について、検索と否定を繰り返し、ますます混乱してしまいます。
そこで、次のようなプログラムを作成したいと思いました:
このようにして、お子様の生年月日、家系図の制限、および一致する名前のリストが表示されます。あなたの好みに合わせて、リストにスコアが付けられています。これに基づいて、好みの名前を見つけることができます。もちろん、新しいアイデアがあれば、いつでも新しい名前を語彙に追加して再計算できます。
コードの紹介:
/chinese-name-scoreコードルートディレクトリ
main
コードディレクトリfile
_lines.py 辞書内の重複した名前と空行を削除するための辞書ファイルを設定します/chinese-name-score/main/sys_config.py クロール対象の URL と辞書ファイルのパスを含むプログラムのシステム構成
コードの使用方法:
該当する単語がない場合は、辞書ファイル names_boys_double.txt および names_grils_double.txt を検索して、いくつかの名前リストを追加できます。ここで見つけたものを行ごとに分割して最後に追加します;
出力ディレクトリで、出力ファイルを表示し、Excel にコピーしたり、並べ替えやその他の操作を実行したりできます
プログラムの構成の入り口
プログラムの構成は次のとおりです。
# 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"
に従って、システムは単一文字辞書を使用するか複数文字辞書を使用するかを自動的に決定します。setting[“limit_world”]
プログラムの原理
これは爬虫類の簡単なものです。 life.httpcn.com/xingming.asp Web サイトを開いて表示できます。これは POST フォームであり、必要なパラメータを入力して [送信] をクリックすると、結果ページの下部に 8 文字が表示されます。スコアと5フレームスコア。 スコアを取得したい場合は、2 つのことを行う必要があります。1 つは、クローラーが自動的にフォームを送信し、結果ページを取得することです。もう 1 つは、結果ページからスコアを抽出することです。それは非常に簡単で、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 = {} # 日期类型,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"
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()
実行結果の例
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
フレンドリーなリマインダー
スコアは、出生時間、制限された文字、資格のある文字の画数など、多くの要素に関連しています。これらの条件により、一部の名前のスコアが高くならないことが決まります。影響を受けません。これにより、相対スコアが高いものを見つけることができます。
このリストは参考用です。読んでください。いくつかの記事では、多くの有名人や歴史上の偉人は星占いのスコアが非常に低いですが、彼らは皆素晴らしい業績を残しています。名前には多少の影響力がありますが、時にはキャッチーな言葉が最適です。
このリストから名前を選択した後、Baidu Check 、Renren などの場所で検索して、否定的な人が同じ名前を持ったり、この名前を持つ人が多すぎて街が台無しになるのを防ぐことができます。
8文字のスコアは中国から受け継がれ、5フレームのスコアは現代の日本人によって発明されました。時々、西洋の干支の命名方法を試すこともできます。ホロスコープと5つのスコアが大きく異なるのは不思議です。さまざまな Web サイトのスコアは、これが参照のみであることをさらに証明していますhub に
アップロードされています2.
Python meets データ収集ビデオチュートリアル
3.Python 学習マニュアル
以上が名前を取得するための Python クローラー実装コード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。