検索
ホームページバックエンド開発Python チュートリアル名前を取得するための Python クローラー実装コード例

誰もが人生で何かに遭遇するでしょう。それが起こる前は気にしませんが、それが起こると、それは非常に重要であり、短期間で大きな決断を下す必要があることがわかります。生まれたばかりの赤ちゃんに名前を付けよう。以下の記事では主にPythonクローラーを使って子供に良い名前を付ける方法を紹介していますので、困っている友達は参考にしてみてください。

はじめに

生まれてから2週間以内に名前を付けなければならないので(出生証明書が必要)、最初はとてもパニックになった人も多いと思います。漢字が多すぎて、どんな文字でも名前にできるような気がしましたが、どう考えてもそんなことはないことが後で分かりました。不適切だと思い、あちこちの辞書を調べたり、ネットで検索したり、唐宋の詩や宋書、さらには武侠小説まで読みました。しかし、長い間考えてきた名前は、しばしば意見や反対に遭遇します。名前の発音が難しい、親戚の名前とアクセントが同じなど、家族の名前について、検索と否定を繰り返し、ますます混乱してしまいます。

それで、私たちは再びインターネットに戻って検索し、「良い赤ちゃんの名前の完全なリスト」などの多くの記事をインターネット上で見つけました。これらの記事には一度に何百、何千もの名前が掲載されており、読んでいて眩しかったです。使用する方法。名前を入力すると 8 文字または 5 文字の評価が得られるウェブサイトやアプリがたくさんありますが、この機能は非常に優れており、参考にすることができます。または、これらの Web サイトやアプリの名前は非常に少なく、修飾語などのニーズを満たせないか、有料になり、最終的には役立つものが見つかりません。

そこで、次のようなプログラムを作成したいと思いました:

  1. 主な機能は、バッチ名の参照を提供することです。これらの名前は、赤ちゃんの生年月日に基づいて計算されます。

  2. 名前ライブラリを拡張できます。たとえば、インターネット上の歌の本で素敵な名前を見つけました。それらを追加して使用できます。

  3. たとえば、一部の家系図には制限があり、現在、名前には「国」という単語が含まれている必要があります。そのため、名前リストにはスコアが付けられます。反転後、名前を高スコアから低スコアまで見ることができます

  4. このようにして、お子様の生年月日、家系図の制限、および一致する名前のリストが表示されます。あなたの好みに合わせて、リストにスコアが付けられています。これに基づいて、好みの名前を見つけることができます。もちろん、新しいアイデアがあれば、いつでも新しい名前を語彙に追加して再計算できます。

  5. プログラムのコード構造

コードの紹介:

/chinese-name-scoreコードルートディレクトリ

  • /chinese-name-score/

    main

    コードディレクトリ
  • /chinese-name-score/main/dicts 辞書ファイルディレクトリ

  • /chinese-name-score/main/dicts/names_boys_double.txt 辞書ファイル、男の子の 2 文字の名前

  • /chinese-name -score /main/dicts/names_boys_single.txt 辞書ファイル、男の子の 1 文字の名前

  • /chinese-name-score/main/dicts/names_girls_single.txt 辞書ファイル、女の子の 2 文字の名前

  • /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 プログラムの実行入り口


  • コードの使用方法:

該当する単語がない場合は、辞書ファイル names_boys_double.txt および names_grils_double.txt を検索して、いくつかの名前リストを追加できます。ここで見つけたものを行ごとに分割して最後に追加します;

  1. 修飾された単語がある場合は、辞書ファイル names_boys_single.txt と names_girls_single.txt を見つけて、事前に好きな単一の単語のリストを追加してください。行ごとに分割して最後に追加します

  2. user_config.py を開き、設定項目については次のセクションを参照してください

  3. スクリプト get_name_score.py を実行します。
  4. 出力ディレクトリで、出力ファイルを表示し、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”]

  1. この項目が設定されている場合、たとえば「国」に等しい場合、プログラムは、すべての単語を計算用の名前に結合します。たとえば、Guohao と Haoguo という 2 つの名前が計算されます

  2. この項目を設定せず、空の

    文字列 を保持した場合、プログラムは double のみを読み取ります。 -*_double.txtの単語辞書

プログラムの原理

これは爬虫類の簡単なものです。 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 はパラメータ辞書です。 このメソッドを使用して、データを含む POST が送信されます。次に、結果データがコンテンツから取得されます。

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"

2 番目のことは、Web ページから必要なスコアを抽出することです。これを実現するために 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 は BaZi と WuGe のスコアを分析して抽出することができます。

実行結果の例

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. 現在、プログラムは 1 つの Web サイトのコンテンツのみをクロールできます。アドレスは http://life.httpcn.com/xingming.asp
  2. このリストは参考用です。読んでください。いくつかの記事では、多くの有名人や歴史上の偉人は星占いのスコアが非常に低いですが、彼らは皆素晴らしい業績を残しています。名前には多少の影響力がありますが、時にはキャッチーな言葉が最適です。
  3. このリストから名前を選択した後、Baidu Check 、Renren などの場所で検索して、否定的な人が同じ名前を持ったり、この名前を持つ人が多すぎて街が台無しになるのを防ぐことができます。

    8文字のスコアは中国から受け継がれ、5フレームのスコアは現代の日本人によって発明されました。時々、西洋の干支の命名方法を試すこともできます。ホロスコープと5つのスコアが大きく異なるのは不思議です。さまざまな Web サイトのスコアは、これが参照のみであることをさらに証明しています
  4. この記事のコードは
  5. git

    hub に

    アップロードされています

【関連する推奨事項】 1. Python 無料ビデオチュートリアル

2.

Python meets データ収集ビデオチュートリアル

3.

Python 学習マニュアル

以上が名前を取得するための Python クローラー実装コード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
详细讲解Python之Seaborn(数据可视化)详细讲解Python之Seaborn(数据可视化)Apr 21, 2022 pm 06:08 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

详细了解Python进程池与进程锁详细了解Python进程池与进程锁May 10, 2022 pm 06:11 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

Python自动化实践之筛选简历Python自动化实践之筛选简历Jun 07, 2022 pm 06:59 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

归纳总结Python标准库归纳总结Python标准库May 03, 2022 am 09:00 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于标准库总结的相关问题,下面一起来看一下,希望对大家有帮助。

Python数据类型详解之字符串、数字Python数据类型详解之字符串、数字Apr 27, 2022 pm 07:27 PM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

分享10款高效的VSCode插件,总有一款能够惊艳到你!!分享10款高效的VSCode插件,总有一款能够惊艳到你!!Mar 09, 2021 am 10:15 AM

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

详细介绍python的numpy模块详细介绍python的numpy模块May 19, 2022 am 11:43 AM

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

python中文是什么意思python中文是什么意思Jun 24, 2019 pm 02:22 PM

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール