Difference between revisions of "Pywikibot"

С Сибирьска википедья
Айдать на коробушку Айдать на сыскальник
Content deleted Content added
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{YouTube| aBDCOkzZ3-g | width=300|height = 250}}

'''Pywikibot''' — это [[Python]]-библиотека и коллекция инструментов для автоматизации работы на сайтах, работающих на движке [[MediaWiki]], включая [[Википедия|Википедию]] и другие проекты [[Фонд Викимедиа|Фонда Викимедиа]]. Проект был основан в 2003 году и с тех пор стал стандартным инструментом для написания ботов в вики-проектах. Прекрасный работник Сибирской Википедии.
'''Pywikibot''' — это [[Python]]-библиотека и коллекция инструментов для автоматизации работы на сайтах, работающих на движке [[MediaWiki]], включая [[Википедия|Википедию]] и другие проекты [[Фонд Викимедиа|Фонда Викимедиа]]. Проект был основан в 2003 году и с тех пор стал стандартным инструментом для написания ботов в вики-проектах. Прекрасный работник Сибирской Википедии.


== Обзор ==
== Обзор ==
[[Стопа:Викибот.jpg|thumb]]

Pywikibot предоставляет удобный интерфейс для взаимодействия с [[MediaWiki API]], позволяя разработчикам создавать скрипты для массового редактирования страниц, управления категориями, обработки данных [[Викиданные|Викиданных]], загрузки файлов и выполнения многих других задач. Фреймворк поддерживает все основные проекты Викимедиа, а также может быть настроен для работы с любым сайтом на MediaWiki.
Pywikibot предоставляет удобный интерфейс для взаимодействия с [[MediaWiki API]], позволяя разработчикам создавать скрипты для массового редактирования страниц, управления категориями, обработки данных [[Викиданные|Викиданных]], загрузки файлов и выполнения многих других задач. Фреймворк поддерживает все основные проекты Викимедиа, а также может быть настроен для работы с любым сайтом на MediaWiki.


Line 128: Line 130:
Pywikibot предоставляет специальные классы для работы с Викиданными. Пример получения данных из элемента Викиданных:
Pywikibot предоставляет специальные классы для работы с Викиданными. Пример получения данных из элемента Викиданных:


python
import pywikibot
import pywikibot


site = pywikibot.Site('wikipedia:en')
site = pywikibot.Site('wikipedia:en')

repo = site.data_repository()
repo = site.data_repository()

item = pywikibot.ItemPage(repo, 'Q42')
item = pywikibot.ItemPage(repo, 'Q42')

item.get()
item.get()


print(item.labels['en']) # Вывод метки на английском языке
print(item.labels['en']) # Вывод метки на английском языке

print(item.claims) # Вывод утверждений
print(item.claims) # Вывод утверждений

Редактирование элемента Викиданных:
Редактирование элемента Викиданных:


python
item.editLabels(labels={'en': 'Новая метка'}, summary='Обновление метки')
item.editLabels(labels={'en': 'Новая метка'}, summary='Обновление метки')

item.editDescriptions(descriptions={'en': 'Новое описание'})
item.editDescriptions(descriptions={'en': 'Новое описание'})

item.setSitelink(sitelink={'site': 'enwiki', 'title': 'Page title'})
item.setSitelink(sitelink={'site': 'enwiki', 'title': 'Page title'})

== Встроенные скрипты ==
== Встроенные скрипты ==



Latest revision as of 14:23, 20 Травня 2026

Pywikibot — это Python-библиотека и коллекция инструментов для автоматизации работы на сайтах, работающих на движке MediaWiki, включая Википедию и другие проекты Фонда Викимедиа. Проект был основан в 2003 году и с тех пор стал стандартным инструментом для написания ботов в вики-проектах. Прекрасный работник Сибирской Википедии.

Обзор

Pywikibot предоставляет удобный интерфейс для взаимодействия с MediaWiki API, позволяя разработчикам создавать скрипты для массового редактирования страниц, управления категориями, обработки данных Викиданных, загрузки файлов и выполнения многих других задач. Фреймворк поддерживает все основные проекты Викимедиа, а также может быть настроен для работы с любым сайтом на MediaWiki.

Версии

Проект Pywikibot существует в нескольких версиях. Изначально он разрабатывался под названием pywikipedia с использованием системы контроля версий SVN. В 2013 году проект был перенесён на Git, и в это же время были введены новые названия для различных версий:

  • pywikibot-compat — последняя версия устаревшего фреймворка (версия 1), разрабатывавшаяся с июня 2003 по ноябрь 2016 года. Она представляла собой набор скриптов с центральной библиотекой Wikipedia.py.
  • pywikibot-core — текущая версия, основанная на версии 2 фреймворка, разработка которой началась в ноябре 2007 года. В этой версии скрипты стали лучше интегрированы и унифицированы.

Технические требования

Для работы Pywikibot требуется Python версии 3.9 или выше. Фреймворк совместим с MediaWiki версии 1.31 и новее. Pywikibot поддерживает операционные системы Windows, macOS и Linux.

Установка и настройка

Установка

Существует несколько способов установки Pywikibot. Для разработки и использования всех скриптов рекомендуется клонировать репозиторий из Git:

git clone https://gerrit.wikimedia.org/r/pywikibot/core.git

cd core

git submodule update --init

Для использования Pywikibot только как библиотеки (без скриптов) можно установить его через pip:

pip install pywikibot

Настройка

После установки необходимо создать файл конфигурации user-config.py, в котором указываются параметры подключения к вики-сайту. Основные настройки включают:

mylang — код языка вики-проекта (например, 'ru' для русской Википедии)

family — семейство вики-проекта (например, 'wikipedia')

usernames — имя пользователя бота для каждого сайта

Пример минимального файла user-config.py:

python mylang = 'ru' family = 'wikipedia' usernames['wikipedia']['ru'] = 'MyBot'

Авторизация

Pywikibot поддерживает несколько способов аутентификации. Рекомендуемым способом для ботов в проектах Викимедиа является использование OAuth. Для ботов, работающих на частных вики, можно использовать пароль бота (BotPassword).

PAWS

Для пользователей, которые не хотят устанавливать Pywikibot на свой компьютер, существует облачная среда PAWS (PAWS: A Web Shell) — веб-оболочка с предустановленным Pywikibot, доступная по адресу https://hub-paws.wmcloud.org/.

Toolforge

Для запуска ботов в проектах Викимедиа на постоянной основе можно использовать Toolforge — облачную платформу для разработчиков, предоставляемую Фондом Викимедиа. В Toolforge есть специальный образ, содержащий Pywikibot и настроенный для работы с OAuth.

Использование

Командная строка

Pywikibot включает множество готовых скриптов, которые можно запускать из командной строки с помощью основного скрипта pwb.py. Примеры:

Запуск скрипта для страниц

python pwb.py script_name

Указание сайта и языка

python pwb.py script_name -family:wikipedia -lang:ru

Доступные глобальные параметры включают -simulate (режим симуляции, без реальных изменений), -verbose (подробный вывод), -log (ведение лога) и другие.

Библиотека

Pywikibot может использоваться как библиотека для написания собственных скриптов. Ниже приведён пример минимального скрипта:


import pywikibot

site = pywikibot.Site('ru', 'wikipedia') # сайт, на котором будет работать бот

page = pywikibot.Page(site, 'Участник:MyBot/Песочница')

page.text = page.text + '\nДобавленный текст'

page.save('Добавление текста')

Более сложные боты могут наследоваться от классов, предоставляемых Pywikibot:

python

import pywikibot

from pywikibot import pagegenerators

from pywikibot.bot import ExistingPageBot

class MyBot(ExistingPageBot):

   update_options = {
       'text': 'Пример текста',
       'summary': 'Бот: тестовая правка'
   }
   def treat_page(self):
       text = self.current_page.text
       text += '\n' + self.opt.text
       self.put_current(text, summary=self.opt.summary)

def main():

   # Обработка аргументов командной строки
   gen_factory = pagegenerators.GeneratorFactory()
   local_args = pywikibot.handle_args()
   local_args = gen_factory.handle_args(local_args)
   
   # Создание и запуск бота
   bot = MyBot(generator=gen_factory.getCombinedGenerator())
   bot.run()

if __name__ == '__main__':

   main()

Работа с Викиданными

Pywikibot предоставляет специальные классы для работы с Викиданными. Пример получения данных из элемента Викиданных:

import pywikibot

site = pywikibot.Site('wikipedia:en')

repo = site.data_repository()

item = pywikibot.ItemPage(repo, 'Q42')

item.get()

print(item.labels['en']) # Вывод метки на английском языке

print(item.claims) # Вывод утверждений

Редактирование элемента Викиданных:

item.editLabels(labels={'en': 'Новая метка'}, summary='Обновление метки')

item.editDescriptions(descriptions={'en': 'Новое описание'})

item.setSitelink(sitelink={'site': 'enwiki', 'title': 'Page title'})

Встроенные скрипты

Pywikibot включает множество встроенных скриптов для выполнения типовых задач. Некоторые из наиболее часто используемых:

Скрипт Описание redirect.py Исправляет двойные и повреждённые перенаправления replace.py Выполняет массовую замену текста на страницах category.py Управление категориями interwiki.py Добавление и обновление интервики-ссылок (устаревает в эпоху Викиданных) image.py Управление изображениями template.py Замена шаблонов editarticle.py Редактирование статей с возможностью загрузки из файла Полный список скриптов доступен в документации MediaWiki.

Архитектура

Pywikibot имеет модульную архитектуру. Основные модули:

pywikibot — основные классы и функции

pywikibot/page.py — классы для работы со страницами MediaWiki

pywikibot/site.py — классы для работы с сайтами MediaWiki

pywikibot/data/api.py — низкоуровневый интерфейс к MediaWiki API

pywikibot/pagegenerators.py — генераторы страниц

pywikibot/bot.py — базовые классы для создания ботов

pywikibot/families.py — конфигурации для различных вики-семейств

Лицензия

Pywikibot распространяется под лицензией MIT.