Проблема с интеграцией с Википедией — нужно наконец разобраться с этим 101

Извините, ребята, я задавал вопросы о том, как интегрировать данные Википедии в свое приложение, и, честно говоря, я не думаю, что добился какого-либо успеха с моей стороны, поскольку я пробовал все идеи и вроде как отказался когда я читаю тупик или препятствие. Я попытаюсь объяснить, что именно я пытаюсь сделать здесь.

У меня есть простой каталог местоположений, таких как города и страны. Мое приложение представляет собой простое приложение на основе ajax на основе php с возможностью поиска и просмотра. Люди регистрируются и связывают себя с городом, и когда пользователь просматривает города, он/она может видеть людей и компании в этом городе, т. е. тех, кто является частью нашей системы.

Эта часть легко настраивается сама по себе и работает нормально. Дело в том, что мои результаты поиска будут в формате, т. е. кто-то ищет, скажем, Пекин. Он вернется в интерфейсном окне с тремя вкладками:

  1. Первая вкладка будет иметь информационное окно, содержащее информацию о городе для Пекина.
  2. Во-вторых, это вкладка страны, содержащая информационный блок с информацией о стране из Китая.
  3. На третьей вкладке будут списки всех контактов в Пекине.

Контент для первых двух вкладок должен быть взят из Википедии. Теперь я совершенно не понимаю, как лучше всего это сделать, и, кроме того, как только я выберу методологию, то - как мне это сделать и сделать так, чтобы это было вполне крепкий.

Несколько идей, хороших и плохих, которые я смог переварить до сих пор:

  1. Запускайте curl-запрос непосредственно в Википедию и анализируйте возвращаемые данные каждый раз, когда выполняется поиск. В этом случае нет необходимости поддерживать локальную копию данных в Википедии. Другая проблема заключается в том, что он полностью зависит от данных из удаленного третьего места, и я сомневаюсь, что можно каждый раз делать запрос в Википедию для получения базовой информации. Кроме того, учитывая, что данные в Википедии необходимо анализировать при каждом запросе - это преодолеет большие нагрузки на сервер ... или я здесь размышляю.

  2. Возьмите загрузку дампа википедии и запросите его. Ну, я загрузил всю базу данных, но импорт всех таблиц из XML-дампа займет целую вечность. Плюс учтите тот факт, что я просто хочу извлечь список стран и городов и их информационные поля - большая часть информации в дампе мне бесполезна.

  3. Создайте свои собственные локальные таблицы и создайте скрипт cron [здесь я объясню, почему работа cron], который каким-то образом проанализирует все страницы стран и городов в Википедии и преобразует их в формат, который я могу использовать в своих таблицах. Однако, честно говоря, мне не нужна вся информация в инфобоксах как есть, если бы я мог просто получить базовую разметку инфобоксов как есть - мне этого было бы более чем достаточно. Нравится:

Название страны | Информационное поле Необработанный текст

Я могу лично извлечь такие вещи, как координаты и другие детали, если захочу.

Я даже пытался загрузить сторонние наборы данных из infochiumps и dbpedia, но набор данных из infochimps неполный и не содержит всей информации, которую я хотел отобразить, плюс с dbpedia я совершенно не знаю, что делать с CSV-файлом, который я скачал из информационных ящиков. и боюсь, что она тоже может быть неполной.

Но это только часть проблемы здесь. Мне нужен способ показать информацию из Википедии - у меня будут все ссылки, указывающие на Википедию, а также полезная информация из Википедии, правильно отображаемая повсюду, НО проблема в том, что мне нужен способ, который периодически я могу обновлять информацию, которая у меня есть из Википедии, так что, по крайней мере, у меня нет полностью устаревших данных. Например, скажем, система, которая может проверять, и если у нас есть новая страна или новое местоположение, она может анализировать информацию и каким-то образом извлекать ее. Здесь я полагаюсь на категории стран и городов в Википедии, но, честно говоря, все эти идеи на бумаге, частично закодированы, и это огромный беспорядок.

Я программирую на PHP и MySQL, и мой крайний срок быстро приближается - учитывая вышеприведенную ситуацию и требования, какой лучший и наиболее практичный метод для подражания и реализации. Я полностью открыт для идей - практических примеров, если кто-то сделал что-то подобное - я хотел бы услышать: D


person Ali    schedule 16.06.2009    source источник


Ответы (4)


я бы предложил следующее

  • Запросите город из википедии, когда он (город) будет создан в вашей БД.
  • Разобрать данные, сохранить локальную копию с отметкой времени последнего обновления
  • при доступе, обновите данные, если это необходимо. Вы можете отобразить старый с водяным знаком, говорящим, что ему ... дней, и теперь он обновляется. Затем перейдите на свежеприобретенный, когда обновление будет выполнено. Вы сказали, что используете AJAX, так что это не будет проблемой.

Это сведет к минимуму запросы к википедии, и ваш сервис не будет показывать пустые страницы, даже если википедия недоступна.

person Csaba Kétszeri    schedule 16.06.2009
comment
На самом деле дело в том, что для начала мне понадобится список всех городов, доступных в Википедии - я рассчитываю на использование категорий, которые сгруппировали города на одной странице. Однако вопрос в том, как я могу извлечь выбранную информацию из Википедии, например, когда вы говорите запросить город, как мне это сделать, учитывая, что мы говорим о тысячах записей. - person Ali; 17.06.2009
comment
Все ответы были отличными - я использую вашу концепцию, извлекая все выбранные экспорты xml статей, которые я хочу, и запускаю скрипт для анализа экспортированных файлов для информационного поля - пока он работает как шарм. Спасибо всем - person Ali; 20.06.2009

Пара вещей, о которых я могу думать:

  1. Просто отобразите данные Википедии в iframe на своем сайте.

  2. Используйте Curl, чтобы получить html из википедии, затем используйте пользовательскую таблицу стилей, чтобы стилизовать его и/или скрыть части, которые вы не хотите отображать.

Попытка на самом деле проанализировать HTML и извлечь нужные фрагменты будет огромной болью, и, скорее всего, для каждого города она должна быть индивидуальной. Лучше сделать что-то простое, работающее сейчас, а затем вернуться и улучшить его позже, если вы решите, что вам это действительно нужно.

person Eric Petroelje    schedule 16.06.2009
comment
Вы можете предложить свои два решения как 2 ответа, чтобы было легче проголосовать. - person lakshminb7; 16.06.2009
comment
Я сомневаюсь, что идея iframe сработает, поскольку мне нужно просто отобразить информационную часть статьи в результатах поиска для этого города или местоположения. Я слышал, что википедия ограничивает внешние запросы или около того — насколько это правда и какие ограничения существуют в википедии в отношении получения информации таким образом. - person Ali; 16.06.2009

Как насчет использования одного из веб-сервисов Геокодирования Википедии

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

Если этого будет достаточно.

person jitter    schedule 16.06.2009

Взгляните на DBPedia, он содержит хорошее извлечение данных из Википедии в формате CSV.

person WeShallOvercome    schedule 07.05.2010