Сделайте сценарий на вашем любимом языке сценариев (Python для меня).Я сделал что-то похожее с базами данных и надеюсь, что подобное решение подойдет вам.
С Python:
- urllib2 может получить тело вашей веб-страницы, учитывая URL.
- Используйте синтаксический анализатор XML, например etree, для рекурсивного спуска по дереву и преобразования его в иерархию XML / JSON по вашему выбору (по вашему усмотрению)
- Загрузить его в Solr (Solr позволяет загружать в XML, JSON, CSV и т. Д.).
И периодически запускать этот скрипт, как задание cron.
Вам потребуется два фрагмента кода: один для запроса службы RESTful и получения тела ответа.;другой - для загрузки отформатированного документа в Solr.
Этот фрагмент кода загружает объект Python request_obj в указанный request_url , и ответ solr возвращается в виде Pythonобъект.Нативный объект Python (состоящий из словарей (ассоциативных массивов), списков, строк, чисел) легко преобразуется в JSON (с 1-2 оговорками).
Используйте это только для справки.Я не гарантирую пригодность для ваших целей.
Не забудьте использовать / update / json? Wt = python , который доступен в Solr 3.3 и далее.Вам нужна библиотека MultipartPostHandler.
def solr_interface(self,request_url,request_obj):
request=json.dumps(request_obj,indent=4,encoding="cp1252")
opener = urllib2.build_opener(MultipartPostHandler.MultipartPostHandler)
urllib2.install_opener(opener)
req = urllib2.Request(request_url, request)
req.add_header("Content-Type", "application/json")
text_response = urllib2.urlopen(req).read().strip()
return ast.literal_eval(text_response)
Что касается синтаксического анализа (и составления) XML в Python, используйте эти превосходные учебные пособия http://www.learningpython.com/2008/05/07/elegant-xml-parsing-using-the-elementtree-module/ и http://effbot.org/zone/element.htm
Это пример командной строки.
from xml.etree import ElementTree as ET
elem =ET.fromstring("<doc><p>This is a block</p><p>This is another block</p></doc>")
for subelement in elem:
... print subelement.text
...
This is a block
This is another block