Форум
подписаться на последние сообщения:
Парсинг xml => результат в переменную
|
|
Доброе, достал наверное ;-) прошу не игнорить, не специально)
В теме созданной мною описывается программка, которую начал писать (первую свою на python).
В программе используется курс валюты. Хотелось бы получать автоматически этот курс с сайта национального банка и использовать в переменной.
Сначала думал, чтобы каждый раз при запуске программка дергала сайт и получала, но решил немного расширить вариант и возможно ... где-то оптимизировать.
1. Первый запуск программы
2. программка стучиться к сайту и парсит xml и получает курс валюты нужной
3. добавляет данные в нужную переменную и уже использует по-своему.
Я подумал, и ..наверное логичнее было бы в директории программки создавать текстовый документ с датой 05122010.txt в котором будут храниться курсы нужных валют (не одной, а несколько)
например содержание файла:
12.1112
18.2234
4.2243
6.1278
Это курсы 4х валют, которые буду использовать, думаю больше не надо, но чуть что добавить уже труда не составить.
Ссылка на курсы валют такая :
http://www.bnm.md/md/official_exchange_rates?get_xml=1&date=06.12.2010
Из неё вижу, что нужно будет подставлять еще переменную ДАТА, которая будет подставляться в URL ...которую парсить придется.
Отпарсенные данные закинуть в файлик, думаю особого труда не составит, единственная проблема это получить их.
Сейчас пытаюсь понять с чем едят xml.etree.elementtree , но может быть увидев суть задачи, кто-то предложит более подходящую библиотеку...
Я не прошу выполнить это за меня, а просто подсказать ;-) куда копать. Потому как пока сам не сделаешь и поймешь, ничего не будет получаться.
|
|
|
Ну проще всего получить данные думается так:
|
|
|
vldmr,
Предлагаю следующий вариант. Файл xml который скачивается с валютой сохранять у себя на компе. При старте программы проверять существует ли этот файл у вас в папке, если нет - скачиваем и сохраняем. Дальше уже с помощью ElementTree парсим файлик и используем данные из него. Надеюсь кто то даст вам пример для ElementTree, я что то не нахожу у себя удачного куска кода.
|
|
|
Ну проще всего получить данные думается так:
1
2
3fh = urllib.request.urlopen("http://www.python.org/index.html")
#читаем или сразу запихиваем в парсер
html = fh.read()
и ругается
|
|
|
оказалось всё просто: urllib.urlopen =)
|
|
|
Виноват, написал для версии питона 3
Попробуйте так:
дока - http://docs.python.org/release/2.6.6/library/urllib.html?highlight=urllib#module-urllib
|
|
|
alexis,
твой вариант годен ;-) хотя есть некоторые моменты... например то, что он как-то не корректно скачивает xml ... не полностью. ХЗ.
пока читаю ОСНОВЫ, а документацию стараюсь не трогать, вчера запутался немного и считаю что пока что для меня это научная фантастика.
|
|
|
ну сам не проверял, но кусок кода кинул, который использовался в похожей ситуации. можно покопать сокеты или другие либы питона, но тут еще сложнее все будет
|
|
|
ну сам не проверял, но кусок кода кинул, который использовался в похожей ситуации. можно покопать сокеты или другие либы питона, но тут еще сложнее все будет
Да не, буду пробовать, этот момент не особо критичен, поэтому пока его опущу, сейчас другие расширения на горизонте появились, которые дадут возможность еще подумать над простыми моментами.
|
|
|
на днях могу закинуть сюда кусок кода по xml.etree
|
|
|
закидывай, с комментариями если не сложно, будет интересно разобрать и попробовать.
|
|
|
Только вставьте нужные импорты и проверьте код, ибо он для 3 версии питона...но думается либа осталась без изменений...хотя надо если что почитать доку для точных выводов IncidentError определялся так: class IncidentError(Exception): pass...так что я мог не писать его)
|
|
|
http://pyplanet.org/forum/python/99/sovetyi-po-kodingu/?page=3#post_779
в точку!
|
|