Guten Morgen: entspannt: Es gibt Zeiten, in denen Sie Informationen über Wikipedia erhalten möchten. Verwenden wir die MediaWiki-API, die in solchen Fällen verwendet werden kann.
Sie können Wiki-Funktionen wie das Hinzufügen, Aktualisieren und Durchsuchen von Anmeldeseiten zum Wiki verwenden.
API: https://ja.wikipedia.org/w/api.php
Indem Sie der obigen URL einen Verarbeitungstyp als Parameter "Aktion" zuweisen, können Sie verschiedene Funktionen wie Suchen und Aktualisieren verwenden. Dieses Mal lernen wir, wie man die grundlegenden Wiki-Informationen "Erfassung (Aktion = Abfrage)" sucht und erhält.
getWikiData
import requests
import json
def getWikiData(url, params):
res = requests.get( url,
params = params)
return res.json()
url ="https://ja.wikipedia.org/w/api.php"
params = { "action" : "query",
"titles" : "Python",
"format" : "json"
}
print(getWikiData(url,params))
【Ergebnis】
{
'batchcomplete': '',
'query': {
'pages': {
'993': {
'pageid': 993, ##Eindeutige ID
'ns': 0,## nameSpace
'title': 'Python' ##Seitentitel
}
}
}
}
params = { "action" : "query",
"titles" : "Python",
"prop" : "info",
"format" : "json"
}
{
'batchcomplete': '',
'query': {
'pages': {
'993': {
'pageid': 993,
'ns': 0,
'title': 'Python',
'contentmodel': 'wikitext',
'pagelanguage': 'ja',
'pagelanguagehtmlcode': 'ja',
'pagelanguagedir': 'ltr',
'touched': '2020-09-21T07:44:48Z',
'lastrevid': 79623671,
'length': 50355
}
}
}
}
(Meistens ist [verkürzte Hauptgegenstandsstütze + Stütze] der Gegenstandsname)
params = { "action" : "query",
"titles" : "Python",
"prop" : "info",##Stehende Position des Hauptgegenstands
"inprop" : "watchers",##Unterposition stehende Position
"format" : "json"
}
{
'batchcomplete': '',
'query': {
'pages': {
'993': {
'pageid': 993,
'ns': 0,
'title': 'Python',
'contentmodel': 'wikitext',
'pagelanguage': 'ja',
'pagelanguagehtmlcode': 'ja',
'pagelanguagedir': 'ltr',
'touched': '2020-09-21T07:44:48Z',
'lastrevid': 79623671,
'length': 50355,
'watchers': 157 ##Hier
}
}
}
}
params = { "action" : "query",
"titles" : "Python",
"prop" : "categories",
"clprop" : "sortkey",
"format" : "json"
}
{
'batchcomplete': '',
'query': {
'pages': {
'993': {
'pageid': 993,
'ns': 0,
'title': 'Python',
'categories': [
{
'ns': 14,
'title': 'Category:Python',
'sortkey': '2a0a505954484f4e',
'sortkeyprefix': '*'
},
{
'ns': 14,
'title': 'Category:Objektorientierte Sprache',
'sortkey': '505954484f4e0a505954484f4e',
'sortkeyprefix': 'PYTHON'
},
{
'ns': 14,
'title': 'Category:Quelloffene Software',
'sortkey': '505954484f4e0a505954484f4e',
'sortkeyprefix': 'PYTHON'
},
{
'ns': 14,
'title': 'Category:Skriptsprache',
'sortkey': '505954484f4e0a505954484f4e',
'sortkeyprefix': 'PYTHON'
},
{
'ns': 14,
'title': 'Category:Grundlegende Informationstechnikerprüfung',
'sortkey': 'e381afe38184e3819de382930a505954484f4e',
'sortkeyprefix': 'Ja'
},
{
'ns': 14,
'title': 'Category:Artikel mit ungültigen Quellen/2018',
'sortkey': '420a505954484f4e',
'sortkeyprefix': 'B'
}
]
}
}
}
}
params = { "action" : "query",
"titles" : "Python",
"list" : "allcategories",
"acprop" : "size", ##Unterschiedliche Eigenschaften für jede Liste
"aclimit" : 5, ##Maximale Anzahl von Erfassungen Änderungen des Elementnamens für jede Liste
"format" : "json"
}
{
'batchcomplete': '',
'continue': {
'accontinue': '.22_LR_firearms',
'continue': '-||'
},
'query': {
'pages': {
'993': {
'pageid': 993,
'ns': 0,
'title': 'Python'
}
},
'allcategories': [
{
'size': 1,
'pages': 1,
'files': 0,
'subcats': 0,
'*': '" + afterCat + "'
},
{
'size': 1,
'pages': 1,
'files': 0,
'subcats': 0,
'*': '" + afterCat + "$2'
},
{
'size': 2,
'pages': 2,
'files': 0,
'subcats': 0,
'*': '$1'
},
{
'size': 3,
'pages': 3,
'files': 0,
'subcats': 0,
'*': '((documentation))Seiten mit ungewöhnlicher Verwendung von'
},
{
'size': 9,
'pages': 9,
'files': 0,
'subcats': 0,
'*': '+Ultra'
}
]
}
}
params = { "action" : "query",
"titles" : "Python",
"list" : "categorymembers",
"cmtitle" : "Category:Objektorientierte Sprache", ##Wenn Sie Kategoriemitglieder verwenden, müssen Sie dies hier einstellen.
"cmlimit" : 5, ##Maximale Anzahl von Akquisitionen
"cmprop" : "ids|title|sortkey",##Gegenstände zu bekommen.[|]Sie können mehrere Trennzeichen angeben.
"format" : "json"
}
{
'batchcomplete': '',
'continue': {
'cmcontinue': 'page|4345594c4f4e|2496222',
'continue': '-||'
},
'query': {
'pages': {
'993': {
'pageid': 993,
'ns': 0,
'title': 'Python'
}
},
'categorymembers': [
{
'pageid': 821212,
'ns': 0,
'title': 'Vergleich objektorientierter Sprachen',
'sortkey': '2ae381b2e3818be3818f0ae382aae38396e382b8e382a7e382afe38388e68c87e59091e8a880e8aa9ee381aee6af94e8bc83'
},
{
'pageid': 181337,
'ns': 0,
'title': 'ActiveBasic',
'sortkey': '41435449564542415349430a4143544956454241534943'
},
{
'pageid': 3785500,
'ns': 0,
'title': 'Ballerina',
'sortkey': '42414c4c4552494e41'
},
{
'pageid': 2066745,
'ns': 0,
'title': 'Boo (Programmiersprache)',
'sortkey': '424f4f2028e38397e383ade382b0e383a9e3839fe383b3e382b0e8a880e8aa9e29'
},
{
'pageid': 1503,
'ns': 0,
'title': 'C Sharp',
'sortkey': '43230a43205348415250'
}
]
}
}
Beim Erstellen eines Benutzerwörterbuchs für Mecab habe ich den folgenden Code erstellt, um alle Inhaltstitel in der entsprechenden Kategorie zu erhalten.
makeOwaraiList
import requests
import json
import csv
import re
def getWikiData(url, params):
res = requests.get( url,
params = params)
return res.json()
fileName = "wikiList"
url ="https://ja.wikipedia.org/w/api.php"
params = { "action" : "query",
"list" : "categorymembers",
"cmlimit": "50",
"format" : "json"
}
categories = ['Japanische Lachkombination','Japanische Frauenlachkombination','Japanische Männer und Frauen lachen Kombination','Japanisches Lachtrio','Japanische Lachgruppe','Japan>Paar lachende Kombination']
with open( fileName + ".csv",'a', encoding="utf-8") as f:
writer = csv.writer(f)
for category in categories :
params['cmtitle'] = 'Category:' + category;
params['cmcontinue'] = '';
wikiData = getWikiData(url,params)
while True:
for page in wikiData['query']['categorymembers']:
if page['ns'] == 0:
title = (re.sub("\(Komödie\)|\(Komödieコンビ\)|\(KomödieTrio\)|\(Talent\)|\(Komödieグループ\)|\(Trio\)|\(Einheit\)|\(Entertainer\)", "" ,page['title'])).strip()
writer.writerow([title])
if ('continue' in wikiData and wikiData['continue']['cmcontinue']):
params['cmcontinue'] = wikiData['continue']['cmcontinue']
wikiData = getWikiData(url,params)
else :
break
Wieder vertraute ich der Formel voll und ganz und studierte und verwendete die API: entspannt: Es gibt viele Situationen, in denen Sie die Informationen im Wiki verwenden können. Wenn Sie diese API beherrschen, macht die Implementierung mehr Spaß.
Recommended Posts