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

StackOverflow https://stackoverflow.com/questions/1001156

Вопрос

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

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

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

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

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

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

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

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

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

Название страны | Infobox Raw Text

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

<Ол>
  • Просто отобразите данные википедии в iframe на своем сайте.

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

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

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

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

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

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top