Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отображение погоды на рабочем столе, Обработка данны с погодных сайтов 
V
    Опции темы
Novell
Дата 28.9.2010, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.9.2010

Репутация: нет
Всего: нет



Нашел статью здесь с примером обработки погодной информации с Yahoo. Решил по образу и подобию получить информацию с Gismeteo. Обработка полученных xml данных застопорилась. Согласно примера, в переменной после feedparser у меня находится содержимое запросов к серверу, а не полей с данными о погоде (согласно задумке smile ). 
Подскажите, как обрабатывать xml данные.
PM MAIL   Вверх
pythonwin
Дата 28.9.2010, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Novell, ты хочешь на свой сайт поставить значок погоды или использовать данные по погоде в GUI-программе?
PM WWW GTalk Jabber   Вверх
Novell
Дата 28.9.2010, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.9.2010

Репутация: нет
Всего: нет



аплет для Gnome нарисовать хочу.
PM MAIL   Вверх
pythonwin
Дата 29.9.2010, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(Novell @  28.9.2010,  17:31 Найти цитируемый пост)
аплет для Gnome нарисовать хочу. 

а чем gweather не устраивает?
PM WWW GTalk Jabber   Вверх
Novell
Дата 29.9.2010, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.9.2010

Репутация: нет
Всего: нет



для gweather:
Цитата

Сводка погоды загружает информацию о погоде с серверов национальной службы погоды США
, а я отметил:
Цитата

Решил по образу и подобию получить информацию с Gismeteo

Да и тема задумывалась  не о поиске, а о создании аплета для Gnome.
PM MAIL   Вверх
pythonwin
Дата 29.9.2010, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



PM WWW GTalk Jabber   Вверх
pythonwin
Дата 29.9.2010, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(Novell @  29.9.2010,  10:17 Найти цитируемый пост)
Сводка погоды загружает информацию о погоде с серверов национальной службы погоды США

вид можно настроить, а вот проверить показатели нужно за 25.02.2008 год и сравнить, но данных за это число на gismeteo.ru или mail.ru просто нет
http://pogoda.mail.ru/archive.html?city=18...date=2008-02-25

Присоединённый файл ( Кол-во скачиваний: 17 )
Присоединённый файл  gweather_details.png.ru.png 32,56 Kb
PM WWW GTalk Jabber   Вверх
Novell
Дата 29.9.2010, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.9.2010

Репутация: нет
Всего: нет



Спасибо за ссылки (видимо я сам гугль не осилил еще smile ) Нашел скрипт формирующий веб страницу. Разбираюсь в скрипте (неопытен я еще).

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  weather.zip 1,49 Kb
PM MAIL   Вверх
Novell
Дата 1.10.2010, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.9.2010

Репутация: нет
Всего: нет



Здесь еще одна статья по теме. Полученные данные сохраняются в текстовый файл. Осталось только обособить это каркасом Gnome applet. 
Скрипт не заработал сразу - ругается на отступы и пути сохранения. Прикладываю скрипт (указать свой путь к файлу выходных данных и код города).

Это сообщение отредактировал(а) Novell - 1.10.2010, 07:44

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  weather_2. 1,59 Kb
PM MAIL   Вверх
Novell
Дата 28.6.2011, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.9.2010

Репутация: нет
Всего: нет



Решил поставить точку в данном вопросе.
Условия изменились. Теперь упор сделан на conky.
Прилагаю код скрипта на python, который забирает страничку с сайта komimeteo.ru
В скрипте обрабатываются данные для города Печора. 
Принтами печатается строка с управляющими символами для conky. 
Данный скрипт публикуется, как пример работы с регулярными выражениями.
Код

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
import urllib2
_url = "http://komimeteo.ru/index.html"
skin = 'default'
u = urllib2.urlopen(_url)
page=u.read()
u.close()
res = re.findall('<table.+?>(.+?)</table>', page, re.DOTALL)
res = re.findall('<tr.+?>(.+?)</tr>', res[8], re.DOTALL)
res = re.findall('<td.+?>(.+?)</td>', res[4], re.DOTALL)
for i in range (0, len(res)):
    res[i] = res[i].replace('<b>','')
    res[i] = res[i].replace('</b>','')
    res[i] = res[i].replace('&nbsp;','')
    res[i] = res[i].replace('</p>','')
print '${alignc}',res[0].decode('utf-8')
print res[1].decode('utf-8'),
print '${alignr}',res[2].decode('utf-8')
print '${alignc}',res[3].decode('utf-8')
print res[4].decode('utf-8'),
print '${alignr}',res[5].decode('utf-8')
print '${alignc}',res[6].decode('utf-8')
print res[7].decode('utf-8'),
print '${alignr}',res[8].decode('utf-8')
print '${alignc}',res[9].decode('utf-8')

Для того, что бы использовать скрипт в conky, надо убрать все "decode('utf-8')". Видимо Conky сам умеет декодировать строки.
PM MAIL   Вверх
Stolzen
Дата 28.6.2011, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 1
Всего: 48



Novell, зачем регулярные выражения? http://stackoverflow.com/questions/1732348/#1732454

В питоне же есть такая замечательная вещь, как BeautifulSoup.


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
Novell
Дата 28.6.2011, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.9.2010

Репутация: нет
Всего: нет



Не увидел внятных пояснений по модулю BeautifulSoup. Поэтому пошел тем путем, который более доступен.
На следующем этапе буду смотреть в сторону данного модуля.

А пока что, по указанному выше скрипту добавлю:
Код

res = re.sub('<.*?>','',res[0])

Эта строка позволяет избавиться от всех 
Код
res[i] = res[i].replace('<b>','')


PM MAIL   Вверх
Novell
Дата 28.6.2011, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.9.2010

Репутация: нет
Всего: нет



В целях самообразования и в помощ другим.
Доработанный скрипт, который вытягивает погоду с яндекса. Он более универсален.
Код

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
import urllib2
_url = "http://pogoda.yandex.ru/pechora/"
skin = 'default'
u = urllib2.urlopen(_url)
page=u.read()
u.close()
res = re.findall('<table.+?>(.+?)</table>', page, re.DOTALL) #Разделяем содержимое по таблицам
res = re.findall('<tr.+?>(.+?)</tr>', res[4], re.DOTALL)#разделяем содержимое таблици 4 по строкам
res = re.sub('</div>|</span>',';',res[0])#заменяем теги на точку с запятой
res = re.sub('<.*?>','',res)#удаляем лишние теги из строковой переменной
res = res.split(';')#разделяем строку по признаку точки с запятой в список строк
for i in range(0,len(res)):    
    print res[i].decode('utf-8')

Переменная res по ходу выполнения скрипта несколько раз меняет свой тип.
З.Ы.  smile 
PM MAIL   Вверх
Backward
Дата 16.7.2011, 04:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 5.6.2007

Репутация: 2
Всего: 2



Цитата(Stolzen @  28.6.2011,  11:21 Найти цитируемый пост)
В питоне же есть такая замечательная вещь, как BeautifulSoup

Правильнее использовать html5lib и lxml, ИМХО.
Код

import html5lib
import requests

def main():
    hdr = {"User-Agent": "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; "\
            "SV1; MEGAUPLOAD 2.0)"}

    r = requests.get("http://pogoda.yandex.ru/pechora", headers=hdr)
    if 200 != r.status_code:
        return
    xml = html5lib.parse(r.content, treebuilder="lxml", namespaceHTMLElements=False)

    current = xml.find(".//table[@class='b-current-weather']")
    result = []
    for td in current.iterfind(".//td"):
        if "content-info content-info_hidden" != td.get("class"):
            result.append("\n".join(x.text for x in td.iter() if x.text))
    print("Сейчас:", "\n".join(x for x in result[:-1] if x))
    print("=" * 79)

    forecast = xml.find(".//table[@class='b-forecast-brief ']")
    result = []
    for i, tr in enumerate(forecast.iterfind(".//tr")):
        row = list(x.text or x.tail for x in tr.iter() if x.text or x.tail)
        if 0 == i:
            row = list("{} {}".format(row[j], row[j+1]) for j in xrange(0, len(row), 2))
        result.append(row)
    print("\n\n".join("{}\n{}\n{} {}".format(*x) for x in zip(*result)))

if "__main__" == __name__:
    main()



PM MAIL   Вверх
Novell
Дата 22.7.2011, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.9.2010

Репутация: нет
Всего: нет



Цитата(Backward @  16.7.2011,  04:38 Найти цитируемый пост)
Правильнее использовать html5lib и lxml, ИМХО.


Я скопипастил ваш код, жму выполнить и... нет такого модуля html5lib. Вот на этом предложении следует закончить рассуждения о правильности.

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1332 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.