Понимание дампов викимедиа

#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.