2013-04-22 2 views
1

В Википедии есть много страниц, которые не являются статьями, например. разговорные страницы и т. д. Как отличить их от статей по URL-адресу?Как отличить статью по Википедии по URL?

+0

Что вы пробовали? На страницах «Talk» перед заголовком «Обсуждение»: как в заголовке страницы, так и в URL-адресе. –

+0

Да, но есть не только страницы разговора. Я пытался использовать только alpanumeric URLs, но это явно неверно. – lizarisk

ответ

1

Вы можете получить список Википедии пространств имен и их псевдонимов, используя свой API с помощью следующего запроса:

http://en.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=namespaces

Затем, если часть заголовка страницы до первого двоеточия соответствует любой из известные пространства имен, это не статья; в противном случае.

+0

Этот список пространств имен недостаточно, поскольку MediaWiki также использует что-то: что-то условное для ссылок interwiki. http://en.wikipedia.org/wiki/Interwiki_links – jpatokal

+0

@jpatokal Вопрос задает вопрос о URL-адресах. И хотя URL-адреса, такие как http://en.wikipedia.org/wiki/cs:Main_Page, работают, я думаю, что они используются редко. – svick

2

Короткий ответ: вы не можете с одними только регулярными выражениями.

Более длинный ответ заключается в том, что статьи MediaWiki делятся на пространство имен, которые, в свою очередь, используют двоеточия в качестве маркеров, как в «Talk: Foo». Статьи без двоеточие в названии, таким образом, определенно находится в главном (= содержимом) пространстве имен. Проблема в том, что статьи с двоеточием могут находиться в другом пространстве имен, или be content articles that happen to contain a colon, а так как список пространств имен WP длинный и постоянно меняющийся, вы не можете (или, по крайней мере, не должны) жестко кодировать этот список в регулярном выражении ,

Правильный ответ заключается в том, чтобы использовать MediaWiki API для итерации/поиска статей в основном пространстве имен.

+0

Это двойное значение толстой кишки - это именно то, что заставило меня застрять! – lizarisk

+0

Вы не должны жестко кодировать список пространств имен, но как насчет использования API для получения обновленного списка (см. Мой ответ)? – svick

+0

Почему бы просто не использовать API для получения предварительно фильтрованного списка статей, которые, как гарантируется, будут из основного пространства имен? http://www.mediawiki.org/wiki/API:Query#Using_list.3Dallpages_as_generator – jpatokal

Смежные вопросы