Node.js project that builds a local SQLite database of German verb conjugations by scraping Wiktionary.
The database contains:
- verbs: infinitive, separable prefix, irregular flag, usage popularity
- verb_conjugations: 6 person/number slots per tense (sg1–pl3) for:
- Präsens
- Präteritum
- Perfekt
- verb_translations: schema included (not populated by this scraper)
See: schema.sql
- Verb list is taken from the German Wiktionary category:
https://de.wiktionary.org/w/index.php?title=Kategorie:Verbkonjugation_unregelmäßig_(Deutsch)
- Each verb’s forms are parsed from its Flexion page linked from that list (e.g.
Flexion:<verb>on de.wiktionary.org).
Usage frequency data is taken from the English Wiktionary user pages by Matthias Buchmeier:
- https://en.wiktionary.org/wiki/User:Matthias_Buchmeier/German_frequency_list-1-5000
- https://en.wiktionary.org/wiki/User:Matthias_Buchmeier/German_frequency_list-5001-10000
These lists are used to update the usage_popularity field for verbs present in the local database.
- Node.js (ESM; project uses
"type": "module") npm install
npm installnpm testnpm run scrapenpm run scrape:resume(verbs missing one of: praesens, praeteritum, perfekt)
npm run scrape:incompleteFetches the frequency list(s) above and updates verbs.usage_popularity for matches:
npm run update-frequenciesDeletes verbs that still don’t have all three required tenses:
npm run cleanupScraping progress is saved to:
.scraper-state.json(not committed; see .gitignore)
This enables continuing long runs across multiple sessions.
See LICENSE.