Различают неоднозначности Википедии от нормальных страниц - PullRequest
2 голосов
/ 17 ноября 2011

В настоящее время я пытаюсь извлечь содержимое данной страницы Википедии в простой текстовый файл. Используя XPath, у меня есть код, который делает это отлично. Однако есть только одна простая проблема: некоторые страницы в Википедии являются страницами для устранения неоднозначности.

Теперь, это само по себе не драматично. Я написал выражение XPath, которое получает первую ссылку на страницу устранения неоднозначности в Википедии: (/html/body/div[@id='content']/div[@id='bodyContent']//a[starts-with(@href, '/wiki')]/@href)[1]. Это означает, что я могу просто использовать эту первую ссылку в качестве страницы, с которой я пытаюсь получить контент.

Нет, реальная проблема в том, что я не нашел способа узнать , когда использовать этот код (тот, который извлекает первую ссылку со страницы неоднозначности) или другой фрагмент кода ( тот, который напрямую получает контент с интересной страницы, без неоднозначности). Действительно, я не могу найти способ отличить неоднозначную страницу от обычной.

Пока что я пробовал:

Глядя на источник неоднозначной страницы и сравнивая ее с обычной страницей: я не могу найти разницу.

Глядя на контент на обоих типах страниц: здесь единственное отличие состоит в том, что на некоторых страницах написано «Эта страница может ссылаться» вверху. Однако не все страницы на самом деле упоминают об этом.

Простым решением было бы посмотреть заголовок страницы (например, http://en.wikipedia.org/wiki/Boston_(disambiguation)). Однако не все страницы с неоднозначными значениями содержат слово «устранение неоднозначности» в заголовке: http://en.wikipedia.org/wiki/Freedom.

Итак, в заключение, кто-нибудь знает, как отличить страницы неоднозначности Википедии от страниц Википедии с реальным содержанием?

РЕДАКТИРОВАТЬ: Это на самом деле не имеет отношения к вопросу, но я программирую в Objective-C.

Ответы [ 2 ]

1 голос
/ 19 июля 2014

Вместо того, чтобы полагаться на категории, теперь можно получить это напрямую из API, используя ?action=query&prop=pageprops

Пример: http://en.wikipedia.org/w/api.php?action=query&prop=pageprops&format=json&titles=Ekeby вернет:

{"query":{"pages":{"24789600":{"pageid":24789600,"ns":0,"title":"Ekeby","pageprops":{"disambiguation":"","wikibase_item":"Q410694"}}}}}

0 голосов
/ 17 ноября 2011

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

Но анализ фактического HTML, вероятно, не очень хорошая идея. Вместо этого вам следует использовать API . Используя это, вы можете проверить членство в категории или получить текст статьи. Многие языки уже имеют библиотеки для связи с API, но я не нашел библиотеки для цели C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...