Вопрос интеграции с Википедией - нужно окончательно разобраться в этом 101 - PullRequest
0 голосов
/ 16 июня 2009

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ответы [ 4 ]

2 голосов
/ 16 июня 2009

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

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

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

2 голосов
/ 16 июня 2009

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

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

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

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

1 голос
/ 16 июня 2009

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

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

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

0 голосов
/ 07 мая 2010

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

...