====== LU12b - Crawler ======
Als Datenquelle für unseren Chatbot möchten wir https://wiki.bzz.ch/ nutzen. Dadurch wird der Chatbot Fragen zum Unterricht beantworten können.
Zudem ist beim Wiki im Gegensatz zu z.B. Moodle keine Authentisierung erforderlich, was das Vorhaben etwas vereinfacht.
==== XML-RPC ====
Mit RPC (Remote Procedure Call) lassen sich Befehle auf einem fremden System ausführen. XML-RPC nutzt RPC um Daten im XML-Format auszutauschen.
**Notiz am Rande**
Im Prinzip ist XML-RPC der Vorgänger von SOAP (Simple Object Access Protocol). SOAP nutzt ebenfalls ein erweitertes XML-Format wird aber heutzutage von REST, basierend auf JSON, verdrängt. Es gibt jedoch noch zahlreiche Systeme, die SOAP (historisch bedingt) nutzen.
Ebenfalls gibt es JSON-RPC. Dieses wurde aber grösstenteils durch REST abgelöst.
https://wiki.bzz.ch/ nutzt DokuWiki (https://www.dokuwiki.org/de:dokuwiki), welches XML-RPC und teilweise auch JSON-RPC unterstützt.
^ Beispiel XML-RPC ^ Beispiel JSON-RPC ^
| Request:
curl -X POST https://wiki.bzz.ch/lib/exe/xmlrpc.php \
-H "Content-Type: text/xml" \
--data '
wiki.getPage
de:modul:ffit:3-jahr:start
'
| Request:
curl -X POST https://wiki.bzz.ch/lib/exe/jsonrpc.php \
-H "Content-Type: application/json" \
--data '{
"jsonrpc": "2.0",
"id": "1",
"method": "wiki.getPage",
"params": ["de:modul:ffit:3-jahr:start"]
}'
|
| Response:
====== 3. Lehrjahr =====
===== Inhalte =====
<nspages . -subns -nopages -exclude -h1 -textNS="" -simplelist>
| Response:
{
"id": "1",
"jsonrpc": "2.0",
"result": "====== 3. Lehrjahr =====\n\n===== Inhalte =====\n\n"
}
|
Man sieht, dass die Antwort im Prinzip dieselbe ist.
Die von DokuWiki unterstützten Befehle sind aufgelistet auf https://www.dokuwiki.org/lib/exe/openapi.php#?route=overview