#mediawiki #wikimedia-dumps
#медиавики #викимедиа-свалки #mediawiki #викимедиа-дампы
Вопрос:
Я пытаюсь проанализировать последний дамп wikisource. Более конкретно, я хотел бы получить все страницы под категорией: страница баллад. Для этой цели я скачал https://dumps.wikimedia.org/enwikisource/latest/enwikisource-latest-pages-articles.xml.bz2
дамп. В этом дампе соответствующая страница содержит все, кроме фактических ссылок:
<page>
<title>Category:Ballads</title>
<ns>14</ns>
<id>115796</id>
<revision>
<id>4753508</id>
<parentid>4003780</parentid>
<timestamp>2014-01-25T16:21:08Z</timestamp>
<contributor>
<username>EmausBot</username>
<id>983607</id>
</contributor>
<minor />
<comment>Bot: Migrating 2 interwiki links, now provided by [[Wikipedia:Wikidata|Wikidata]] on [[d:Q8286819]]</comment>
<model>wikitext</model>
<format>text/x-wiki</format>
<text bytes="51" xml:space="preserve">[[Category:Song lyrics]]
[[Category:Poems by form]]</text>
<sha1>43eusqpjj6kaqcp6nl1tcmo4ass36ia</sha1>
</revision>
</page>
<page>
Мой вопрос в том, как мне получить фактическое содержимое страницы и все ссылки на этой странице?
Спасибо!
Ответ №1:
Вы загрузили неправильную версию дампа. Если вас интересуют ссылки на категории, вам необходимо загрузить https://dumps.wikimedia.org/enwikisource/latest/enwikisource-latest-categorylinks.sql.gz , например.
Если вам нужен формат XML, вам нужно будет самостоятельно проанализировать эту информацию из необработанного викитекста. Для этого вы можете использовать https://dumps.wikimedia.org/enwikisource/latest/enwikisource-latest-pages-meta-current.xml.bz2 .
РЕДАКТИРОВАТЬ согласно комментариям:
enwikisource-latest-pages-meta-current.xml
не содержит машиночитаемой информации о категориях, она содержит только информацию о текущем содержимом страницы. Вам нужно будет найти элемент text XML, который содержит необработанный викитекст, хранящийся на странице. Обычно в конце содержимого есть что-то вроде этого:
[[Category:American Civil War]]
[[category:American speeches]]
Это указывает на то, что страница находится в категории «Гражданская война в США» и «Американские речи».
Если вам нужна проанализированная информация, вам нужно будет иметь дело с файлом .sql AFAIK .
Комментарии:
1. Спасибо за ответ. Я также попробовал использовать meta xml и получил тот же результат. Я также попытался импортировать дамп sql в базу данных sqlite и получил синтаксические ошибки. Я предпочитаю не запускать MySQL для этой задачи.
2.
enwikisource-latest-pages-meta-current.xml
не содержит информации о самих категориях, но содержит содержимое статьи; вам нужно будет проанализировать содержимое статьи, чтобы получить данные о категориях. Я обновлю ответ, чтобы объяснить это.3. Импорт Ad в sqlite, это потому, что SQL-версия mysql / mariadb отличается от версии, используемой SQLite. Я отредактировал ответ, чтобы объяснить, что вы можете сделать с файлом meta xml.