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

名前を取得するための Python クローラー実装コード例

May 10, 2017 am 11:42 AM
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 までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Python:ゲーム、GUIなど Python:ゲーム、GUIなど Apr 13, 2025 am 12:14 AM

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

Debian Readdirが他のツールと統合する方法 Debian Readdirが他のツールと統合する方法 Apr 13, 2025 am 09:42 AM

DebianシステムのReadDir関数は、ディレクトリコンテンツの読み取りに使用されるシステムコールであり、Cプログラミングでよく使用されます。この記事では、ReadDirを他のツールと統合して機能を強化する方法について説明します。方法1:C言語プログラムを最初にパイプラインと組み合わせて、cプログラムを作成してreaddir関数を呼び出して結果をinclude#include#include inctargc、char*argv []){dir*dir; structdireant*entry; if(argc!= 2){(argc!= 2){

Pythonと時間:勉強時間を最大限に活用する Pythonと時間:勉強時間を最大限に活用する Apr 14, 2025 am 12:02 AM

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

Nginx SSL証明書更新Debianチュートリアル Nginx SSL証明書更新Debianチュートリアル Apr 13, 2025 am 07:21 AM

この記事では、DebianシステムでNGINXSSL証明書を更新する方法について説明します。ステップ1:最初にCERTBOTをインストールして、システムがCERTBOTおよびPython3-Certbot-Nginxパッケージがインストールされていることを確認してください。インストールされていない場合は、次のコマンドを実行してください。sudoapt-getupdatesudoapt-getinstolcallcertbotthon3-certbot-nginxステップ2:certbotコマンドを取得して構成してlet'sencrypt証明書を取得し、let'sencryptコマンドを取得し、nginx:sudocertbot - nginxを構成します。

debian opensslでHTTPSサーバーを構成する方法 debian opensslでHTTPSサーバーを構成する方法 Apr 13, 2025 am 11:03 AM

DebianシステムでHTTPSサーバーの構成には、必要なソフトウェアのインストール、SSL証明書の生成、SSL証明書を使用するWebサーバー(ApacheやNginxなど)の構成など、いくつかのステップが含まれます。 Apachewebサーバーを使用していると仮定して、基本的なガイドです。 1.最初に必要なソフトウェアをインストールし、システムが最新であることを確認し、ApacheとOpenSSL:sudoaptupdatesudoaptupgraysudoaptinstaをインストールしてください

DebianのGitlabのプラグイン開発ガイド DebianのGitlabのプラグイン開発ガイド Apr 13, 2025 am 08:24 AM

DebianでGitLabプラグインを開発するには、特定の手順と知識が必要です。このプロセスを始めるのに役立つ基本的なガイドを以下に示します。最初にgitlabをインストールすると、debianシステムにgitlabをインストールする必要があります。 GitLabの公式インストールマニュアルを参照できます。 API統合を実行する前に、APIアクセストークンを取得すると、GitLabのAPIアクセストークンを最初に取得する必要があります。 gitlabダッシュボードを開き、ユーザー設定で「アクセストーケン」オプションを見つけ、新しいアクセストークンを生成します。生成されます

Apacheとは何ですか Apacheとは何ですか Apr 13, 2025 pm 12:06 PM

アパッチはインターネットの背後にあるヒーローです。それはWebサーバーであるだけでなく、膨大なトラフィックをサポートし、動的なコンテンツを提供する強力なプラットフォームでもあります。モジュラー設計を通じて非常に高い柔軟性を提供し、必要に応じてさまざまな機能を拡張できるようにします。ただし、モジュール性は、慎重な管理を必要とする構成とパフォーマンスの課題も提示します。 Apacheは、高度にカスタマイズ可能で複雑なニーズを満たす必要があるサーバーシナリオに適しています。

See all articles