Проблема с интеграцией Википедии – надо наконец разобраться 101
-
05-07-2019 - |
Вопрос
Извините, ребята, я запустил имитацию, задавая вопросы о том, как интегрировать данные Википедии в мое приложение, и, честно говоря, я не думаю, что добился какого-либо успеха с моей стороны, поскольку я пробовал все идеи и вроде как сдался. когда я читаю тупик или препятствие.Я попытаюсь объяснить, что именно я пытаюсь здесь сделать.
У меня есть простой каталог мест, таких как города и страны.Мое приложение представляет собой простое приложение на основе Ajax на основе PHP с возможностью поиска и просмотра.Люди регистрируются и связывают себя с городом, и когда пользователь просматривает города, он/она может видеть людей и компании в этом городе, т.е.кто бы ни был частью нашей системы.
Эта часть легко настраивается сама по себе и работает нормально.Дело в том, что мои результаты поиска будут в формате т.е.кто-то ищет, скажем, Пекин.Он вернется в интерфейсном окне с тремя вкладками:
- Первая вкладка будет содержать информационное окно с информацией о городе Пекина.
- Второй будет вкладка страны, содержащая информационное окно с информацией о стране из Китая.
- Третья вкладка будет содержать списки всех контактов в Пекине.
Содержимое первых двух вкладок должно быть взято из Википедии. Теперь я совершенно не понимаю, как лучше всего это сделать, и, более того, как только я определюсь с методологией, то - как мне это сделать и сделать так, чтобы это было вполне крепкий.
Несколько идей, хороших и плохих, которые мне удалось усвоить на данный момент:
Запустите запрос на завивку непосредственно в Википедии и анализируйте возвращаемые данные каждый раз, когда выполняется поиск.В этом случае нет необходимости хранить локальную копию данных в Википедии.Другая проблема заключается в том, что он полностью зависит от данных из удаленного третьего места, и я сомневаюсь, что можно каждый раз отправлять запрос в Википедию для получения базовой информации.Плюс, учитывая, что данные в Википедии необходимо анализировать при каждом запросе - это преодолеет большие нагрузки на сервер..или я тут размышляю.
Загрузите дамп Википедии и запросите его.Ну, я загрузил всю базу данных, но импорт всех таблиц из дампа XML займет целую вечность.Плюс учтите тот факт, что я просто хочу извлечь список стран и городов и их информационных полей — большая часть информации в дампе мне бесполезна.
Создайте свои собственные локальные таблицы и создайте сценарий cron [здесь я объясню, почему задание cron], который каким-то образом анализировал бы все страницы стран и городов в Википедии и преобразовывал их в формат, который я могу использовать в своих таблицах.Однако, честно говоря, мне не нужна вся информация в инфобоксах, так как на самом деле, если бы я мог просто получить базовую разметку инфобоксов как есть - этого было бы для меня более чем достаточно.Нравиться:
Название страны | Infobox Raw Text
Если захочу, я могу лично извлечь такие данные, как координаты и другие детали.
Я даже пытался загрузить сторонние наборы данных из infochiumps и dbpedia, но набор данных из infochimps неполный и не содержал всей информации, которую я хотел отобразить - плюс с dbpedia я совершенно понятия не имею, что делать с загруженным мной csv-файлом информационных боксов. и боюсь, что оно также может быть неполным.
Но это только часть проблемы.Мне нужен способ отображать информацию из Википедии - у меня будут все ссылки, указывающие на Википедию, а также полезная информация из Википедии, отображаемая правильно повсюду, НО проблема в том, что мне нужен способ, позволяющий периодически обновлять имеющуюся у меня информацию. из Википедии, так что, по крайней мере, у меня нет полностью устаревших данных.Например, скажем, система, которая может проверять, и если у нас есть новая страна или новое место, она может проанализировать информацию и каким-то образом получить ее.Здесь я полагаюсь на категории стран и городов в Википедии, но, честно говоря, все эти идеи находятся на бумаге, частично закодированы, и это огромный беспорядок.
Я программирую на PHP и MySQL, и мой срок быстро приближается. Учитывая вышеописанную ситуацию и требования, какой метод лучше и наиболее практично использовать и реализовать.Я полностью открыт для идей. Практические примеры, если кто-то делал что-то подобное, хотелось бы услышать :D
Решение
Я бы предложил следующее
- Запросите город из Википедии, когда он (город) будет создан в вашей БД.
- Проанализируйте данные, сохраните локальную копию с отметкой времени последнего обновления.
- при доступе обновите данные, если это необходимо.Вы можете отобразить старый с водяным знаком, говорящим, что он ...дней назад и сейчас обновляется.Затем по завершении обновления измените его на только что приобретенный.Вы сказали, что используете AJAX, так что проблем не будет.
Это позволит свести к минимуму запросы к Википедии, и ваш сервис не будет показывать пустые страницы, даже если Википедия недоступна.
Другие советы
Несколько вещей, о которых я могу подумать:
<Ол>Просто отобразите данные википедии в iframe на своем сайте.
Используйте Curl, чтобы получить html из википедии, затем используйте пользовательскую таблицу стилей для стилизации и / или скрытия частей, которые вы не хотите отображать.
Попытка на самом деле разобрать HTML-код и вытащить нужные вам кусочки будет огромной болью, и, скорее всего, это будет необходимо для каждого города. Лучше сделать что-то простое, работающее сейчас, а затем вернуться и улучшить его позже, если вы решите, что вам действительно нужно.
Как насчет использования одного из веб-сервисов геокодирования Википедии р>
Есть несколько доступных, где вы можете пройти, например, почтовый индекс и страну к краткому обзору статьи и ссылке на статью в Википедии.
Если этого будет достаточно.
Взгляните на DBPedia, он содержит отличное извлечение данных из Википедии в формате CSV.