Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel für einen Python-Crawler-Implementierungscode für die Übernahme von Namen

Beispiel für einen Python-Crawler-Implementierungscode für die Übernahme von Namen

Y2J
Y2JOriginal
2017-05-10 11:42:164800Durchsuche

Jeder wird in seinem Leben auf etwas stoßen, bevor es auftaucht, aber wenn es dann kommt, stellt er fest, dass es äußerst wichtig ist und dass in kurzer Zeit eine wichtige Entscheidung getroffen werden muss. Das ist für Sie selbst. Geben Sie Ihrem Neugeborenen einen Namen. Der folgende Artikel stellt hauptsächlich vor, wie Sie mit dem Python-Crawler Ihrem Kind einen guten Namen geben können.

Vorwort

Ich glaube, jeder Elternteil hat es schon einmal erlebt, denn es kostet viel Zeit, innerhalb von zwei Wochen nach der Geburt des Kindes einen Namen zu wählen (eine Geburtsurkunde). Jeder ist wie ich. Obwohl ich das Gefühl hatte, dass es so viele chinesische Schriftzeichen gibt, konnte ich mir später einen Namen machen Egal wie ich darüber nachdachte, ich fand es unangemessen, also suchte und las ich Tang-Gedichte, das Buch der Lieder und sogar den Namen Ich denke schon seit langem über die Meinungen und Einwände meiner Familienangehörigen nach, z. B. über Schwierigkeiten beim Sprechen und den gleichen Akzent wie der Name von Verwandten. Auf diese Weise gerate ich in einen Teufelskreis Durchsuchungen und Ablehnungen werden immer unübersichtlicher.

Also gingen wir noch einmal ins Internet, um zu suchen und fanden viele Artikel im Internet, wie zum Beispiel „Eine vollständige Liste guter Jungennamen“. Diese Artikel enthielten Hunderte von Artikeln auf einmal Tausende von Namen sind zu schwindelerregend, um sie zu verwenden. Es gibt viele Websites oder Apps, die Namen testen. Sie können eine Bewertung mit acht oder fünf Zeichen erhalten. Diese Funktion ist recht gut und kann als Referenz verwendet werden von einem zum Testen, oder Diese Websites oder APPs haben nur sehr wenige Namen, können entweder unsere Anforderungen nicht erfüllen, z. B. qualifizierende Wörter, oder sie fangen an, Gebühren zu erheben, und am Ende können wir keine nützlichen finden.

Also wollte ich ein Programm wie dieses erstellen:

  1. Die Hauptfunktion besteht darin, Referenzen für Stapelnamen bereitzustellen, die mit dem kombiniert werden Babynamen werden anhand des Geburtsdatums und des Horoskops berechnet.

  2. Sie können Ihre Namensbibliothek beispielsweise im Buch der Lieder erweitern Wenn Sie im Internet sind und sehen möchten, wie sie sind, können Sie sie hinzufügen und verwenden. Sie können die im Namen verwendeten Zeichen einschränken befinden sich derzeit in der Generation mit dem Zeichen „国“, der Name muss das Zeichen „国“ haben; bei den Namen von hohen bis niedrigen Werten;

  3. Auf diese Weise können Sie eine Kopie erhalten. Es gibt eine Liste mit Namen, die zum Geburtsdatum Ihres Kindes und Ihrem Stammbaum passen Einschränkungen und Ihre Vorlieben, und die Liste hat Bewertungen als Referenz angegeben. Auf dieser Grundlage können wir einen nach dem anderen herausfinden, den Namen, der uns gefällt. Wenn Sie neue Ideen haben, können Sie den Wortschatz natürlich jederzeit um neue Namen ergänzen und neu berechnen.
  4. Codestruktur des Programms

Codeeinführung:

/chinese-name-score Code-Stammverzeichnis

/chinese-name-score/

main
    Codeverzeichnis
  • /chinese-name-score/main/dicts Wörterbuchdateiverzeichnis
  • /chinese-name-score/main/dicts/names_boys_double.txt Wörterbuchdatei, zweibuchstabige Namen für Jungen

  • /chinese-name-score/main/dicts/names_boys_single.txt Wörterbuchdatei, Einzelbuchstabennamen für Jungen

  • /chinese- name-score/ main/dicts/names_girls_single.txt Wörterbuchdatei, zweibuchstabige Namen für Mädchen

  • /chinese-name-score/main/dicts/names_grils_double.txt Wörterbuchdatei, eins -Buchstabennamen für Mädchen

  • /chinese-name-score/main/outputs Ausgabedatenverzeichnis

  • /chinese-name-score/main /outputs/names_girls_source_wxy.txt Ausgabebeispieldateien

  • /chinese-name-score/main/scripts Einige Skripte zur Vorverarbeitung von Wörterbuchdateien

  • / chinese-name -score/main/scripts/unique_

    file
  • _lines.py Legt die Wörterbuchdatei fest, um Duplikate und Leerzeilen aus Namen im Wörterbuch
  • /chinese zu entfernen -name -score/main/sys_config.py Die Systemkonfiguration des Programms, einschließlich der gecrawlten Ziel-URL und des Wörterbuchdateipfads
  • /chinese-name-score/main/user_config.py Die Benutzerkonfiguration des Programms, einschließlich Jahr, Monat, Tag, Uhrzeit, Geschlecht und andere Einstellungen des Babys

  • /chinese-name-score/main/get_name_score.py Programmlaufeingang

  • So verwenden Sie den Code:

  • Wenn keine Qualifikationsmerkmale vorhanden sind, suchen Sie nach den Wörterbuchdateien namens_boys_double. txt und namen_grils_double.txt, Sie können hier Ihre eigenen hinzufügen. Für einige gefundene Namenslisten teilen Sie sie einfach nach Zeilen auf und fügen Sie sie am Ende hinzu.

Wenn es qualifizierte Wörter gibt, suchen Sie die Wörterbuchdateien „names_boys_single.txt“ und „names_girls_single.txt“ und fügen Sie hier Ihre Favoriten hinzu. Eine einzelne Wortliste kann nach Zeilen unterteilt und am Ende hinzugefügt werden.

  1. Öffnen Sie user_config.py und konfigurieren Sie es . Siehe den nächsten Abschnitt für Konfigurationselemente;

  2. Führen Sie das Skript get_name_score.py aus

  3. Im Ausgabeverzeichnis können Sie Ihre eigenen Ausgabedateien anzeigen, die zum Sortieren und für andere Vorgänge nach Excel kopiert werden können.

Programm Der Konfigurationseintrag des Programms

ist wie folgt konfiguriert:

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

Anhand des Konfigurationselements setting[“limit_world”] entscheidet das System automatisch, ob ein Einzelzeichen verwendet werden soll Wörterbuch oder ein Wörterbuch mit mehreren Zeichen:

  1. Wenn dieses Element festgelegt ist, z. B. wenn es gleich „国“ ist, kombiniert das Programm alle Wörter zur Berechnung zu Namen . Beispielsweise werden sowohl die Namen Guohao als auch Haoguo berechnet.

  2. Wenn Sie dieses Element nicht festlegen und die Zeichenfolge leer lassen, liest das Programm nur das Doppelwort-Wörterbuch von *_double.txt

Prinzip des Programms

Dies ist ein einfacher Crawler. Sie können die Website life.httpcn.com/xingming.asp öffnen. Dies ist ein POST-Formular. Geben Sie die erforderlichen Parameter ein und klicken Sie auf „Senden“. Die Ergebnisseite wird geöffnet Score und der Fünf-Frame-Score.

Wenn Sie Ergebnisse erhalten möchten, müssen Sie zum einen das Formular automatisch an den Crawler senden und zum anderen die Ergebnisse aus der Ergebnisseite extrahieren >

Erstens ist es sehr einfach, urllib2 kann es implementieren (der Code befindet sich in /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()
Die Parameter hier sind Mit dieser Methode wird ein POST mit Daten durchgeführt. Anschließend werden die Ergebnisdaten aus dem Inhalt abgerufen. Die Parameter von

params werden wie folgt festgelegt:

 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"
Die zweite Sache besteht darin, die erforderlichen Bewertungen aus der Webseite zu extrahieren. Wir können BeautifulSoup4 verwenden, um dies zu erreichen, und seine Syntax ist auch ganz einfach:

 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()
Mit dieser Methode kann HTML analysiert und die Partituren von acht Zeichen und fünf Rastern extrahiert werden.

Beispiele für Laufergebnisse

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
Mit diesen Ergebnissen können wir sie sortieren, was eine sehr praktische Referenz ist.

Freundliche Erinnerung

  1. Die Punktzahl hängt von vielen Faktoren ab, wie zum Beispiel dem Geburtszeitpunkt, den begrenzten Charakteren, den Strichen der Qualifizierten Zeichen usw. Diese Bedingungen Es wurde entschieden, dass einige Namen keine hohen Bewertungen haben werden, also seien Sie davon nicht betroffen, suchen Sie einfach diejenigen mit hohen relativen Bewertungen

  2. Derzeit Das Programm kann nur den Inhalt einer Website crawlen und die Adresse lautet http://life.httpcn.com/xingming.asp

  3. Diese Liste dient nur als Referenz, die ich gelesen habe Es gibt viele Artikel in der Geschichte, deren Namen sehr niedrig sind, aber sie alle haben einen gewissen Einfluss, aber manchmal sind eingängige Worte die besten >

    Nachdem Sie den Namen aus dieser Liste ausgewählt haben, können Sie ihn auf Baidu, Renren und anderen Orten überprüfen. Nur für den Fall, dass einige negative Personen denselben Namen haben oder es zu viele Personen mit diesem Namen gibt >

  4. Die Acht-Zeichen-Punktzahl stammt aus China, und die Fünf-Zeichen-Punktzahl wurde in der Neuzeit von den Japanern erfunden. Manchmal können Sie auch die westliche Tierkreis-Benennungsmethode ausprobieren, und seltsamerweise auch die Horoskope und die Fünf Die Ergebnisse sind auf verschiedenen Websites sehr unterschiedlich, was ein weiterer Beweis dafür ist, dass dieses Ding nur als Referenz dient.
  5. Der Code dieses Artikels wurde

    hochgeladen

    auf
  6. git
hub

Zusammenfassung[Verwandte Empfehlungen]

1. Python Free Video Tutorial

2.

Python trifft Datenerfassungs-Video-Tutorial

3.

Python-Lernhandbuch

Das obige ist der detaillierte Inhalt vonBeispiel für einen Python-Crawler-Implementierungscode für die Übernahme von Namen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn