Heim >Backend-Entwicklung >Python-Tutorial >Beispiel für einen Python-Crawler-Implementierungscode für die Übernahme von Namen
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:
Die Hauptfunktion besteht darin, Referenzen für Stapelnamen bereitzustellen, die mit dem kombiniert werden Babynamen werden anhand des Geburtsdatums und des Horoskops berechnet.
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;
Codestruktur des Programms
Codeeinführung:
/chinese-name-score Code-Stammverzeichnis
/chinese-name-score/
main/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/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
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.
Öffnen Sie user_config.py und konfigurieren Sie es . Siehe den nächsten Abschnitt für Konfigurationselemente;
Führen Sie das Skript get_name_score.py aus
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:
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.
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.7Mit diesen Ergebnissen können wir sie sortieren, was eine sehr praktische Referenz ist.
Freundliche Erinnerung
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 >
hochgeladen
auf[Verwandte Empfehlungen]
1. Python Free Video Tutorial
2.
Python trifft Datenerfassungs-Video-TutorialPython-LernhandbuchDas 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!