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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Balans - Win Gadget (IndexError) 
:(
    Опции темы
CaptainNemo
Дата 21.5.2011, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 5.6.2008
Где: White Russia, Min sk

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



Приветствую, уважаемые коллеги. К сожалению, с Python я раньше не сталкивался, но давно мечтал заделать себе под Win 7 Гаджет отображающий баланс на мобиле. Случайно увидел у знакомого такое сделанное под Linux на онове вот такого кода:

Код

#!/usr/bin/env python
# -*- coding: cp1251 -*-
import urllib,httplib,urllib2,cookielib,re,string
#import os
from BeautifulSoup import BeautifulSoup

numMTS=' '
pasMTS=' '
code=' '
# 
reqStr='https://....'
cookie = cookielib.CookieJar()
urllib2.install_opener(urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)))
req = urllib2.Request(reqStr)
response = urllib2.urlopen(req)
req = urllib2.Request('https://.....')
response = urllib2.urlopen(req)
the_page = response.read()
response.close()
soup = BeautifulSoup(''.join(the_page))
s=soup.findAll('table',"user")
tbl=s[1]
t=tbl.findAll('td',limit=2)[1].string
q=string.strip(t)
print 'Баланс +375'.decode('utf8')+code+numMTS+':',q


Короче, на работе у меня получилось получать данные по балансу в консоль Python (из под Win-7 32 bit), а когда пришел домой и хотел завершить начатое (дома Win 7 64 bit) этот код перестал работать. Вылетает ошибка:

Код

Traceback (most recent call last):
  File "C:\Python27\mts.py", line ..
    tbl=s[1]
IndexError: list index out of range 


Не могу понять в чем причина... 
Предчувствую, что проблемы с кодировкой, т.к. я пошагово пробовал в консоли выполнять все строки кода, и увидел, что все кирилические символы отображаются как кракозябры, а переменная s принимает значение s=[], хотя, возможно я не прав...


вопросы: 
1)как исправить ошибку, описанную в предыдущем абзаце
2) получится ли у меня использовать этот код python в разметке gadget.html, вот так
Код

<script " type="text/python">
код Python....
 </script>

что бы оформить вывод в Гаджет. Или такой номер не пройдет? 

Любому совету буду рад.  smile 




Это сообщение отредактировал(а) CaptainNemo - 21.5.2011, 02:10
PM MAIL WWW ICQ Skype GTalk   Вверх
Stolzen
Дата 21.5.2011, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(CaptainNemo @  21.5.2011,  02:48 Найти цитируемый пост)
s=soup.findAll('table',"user")

Чему тут переменная s равна?

Сделайте "print s", интересно, что там - наверное, пусто, раз такая ошибка возникает


Цитата(CaptainNemo @  21.5.2011,  02:48 Найти цитируемый пост)
reqStr='https://....'

Цитата(CaptainNemo @  21.5.2011,  02:48 Найти цитируемый пост)
req = urllib2.Request('https://.....')


А можно путь целиком? Или хотя бы xml ответ, чтобы понять, как его можно парсить.

Добавлено через 46 секунд
Цитата(CaptainNemo @  21.5.2011,  02:48 Найти цитируемый пост)
2) получится ли у меня использовать этот код python в разметке gadget.html, вот так
    
<script " type="text/python">
код Python....
 </script>

что бы оформить вывод в Гаджет. Или такой номер не пройдет? 


Не пройдет


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 5.6.2008
Где: White Russia, Min sk

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



Stolzen, 


Код

Сделайте "print s", интересно, что там - наверное, пусто, раз такая ошибка возникает


При трассировании кода через IronPython 64-bit Console (хотел бы подчеркнуть, что на работе запускал код на выполнение с двух 32-bit машин и всё прекрасно работало) пишет s=[], в результате на шаге tbl=s[1] вылетает описанная мною выше ошибка

Цитата

А можно путь целиком? Или хотя бы xml ответ, чтобы понять, как его можно парсить.


Да, я прилепил файл с исходником 

Цитата

2) получится ли у меня использовать этот код python в разметке gadget.html, вот так
    
<script " type="text/python">
код Python....
 </script>

что бы оформить вывод в Гаджет. Или такой номер не пройдет? 
Цитата

Не пройдет


И никак не получится прикрутить вывод баланса в гаджет хотябы для одного из типов Gadget? Я вчера вечером пытался так, действительно, не получилось. Но потом было наткнулся вот на
эту страницу  и появилась надежда, что такое возможно. Жаль, конечно, если так не сработает....



Это сообщение отредактировал(а) CaptainNemo - 21.5.2011, 10:37

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  mts.rar 1,95 Kb
PM MAIL WWW ICQ Skype GTalk   Вверх
CaptainNemo
Дата 22.5.2011, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 5.6.2008
Где: White Russia, Min sk

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



Решил я этот экзампел из-под Убунты потестить. Только вот незадача - не знаю. куда парсер  BeautifulSoup подкинуть, что бы импортировать в приведенный мною код модуль (прошу прощения, если матерно выражаюсь, я второй день как с питоном воюю, и терминологию еще не освоил)... 

Код

from BeautifulSoup import BeautifulSoup


На Убунте питон виден из баша, т.е. при вводе команды "python" баш открывает его ide (как я понимаю, переменные окружения сконфигурированы верно). Но я так и не понял, куда все либы надо ложить под Убунту. По логике - в Bin. Но там я не нашел никаких папок связанных с Pyhon... 


Кто из-под Линукса с Python работает, подскажите, если не составит труда... 

Это сообщение отредактировал(а) CaptainNemo - 22.5.2011, 02:15
PM MAIL WWW ICQ Skype GTalk   Вверх
Stolzen
Дата 22.5.2011, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Суп в линуксе можно установить вот так:

Код

easy_install BeautifulSoup


Ответ от сервера: 

Код

...
<h2>ВРЕМЯ СЕАНСА ИСТЕКЛО</h2>
<p><strong>Сеанс работы с системой интернет-самообслуживания завершён.</strong></p>
<p><a href="login.aspx">Повторный вход в систему</a></p>
<p><span id="sessionExpiredNote">Сеанс работы после 10 минут бездействия заканчивается. Вам необходимо будет ввести пароль снова.
            </span></p><p>Войдите в систему ещё раз.</p>
...


(Он содержится в переменной the_page и soup)


Т.е. как видно, запрос обрабатывается неправильно, поэтому 
Код

s=soup.findAll('table',"user")


Не может найти тег table и выдернуть оттуда юзера - поэтому и в s пусто

Добавлено через 7 минут и 8 секунд
Цитата(CaptainNemo @  21.5.2011,  11:15 Найти цитируемый пост)
И никак не получится прикрутить вывод баланса в гаджет хотябы для одного из типов Gadget? Я вчера вечером пытался так, действительно, не получилось. Но потом было наткнулся вот на
эту страницу  и появилась надежда, что такое возможно. Жаль, конечно, если так не сработает....

В принципе, подобный функционал можно реализовать средствами java script - его-то к виджету без проблем можно будет подключить (наверное)


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 5.6.2008
Где: White Russia, Min sk

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



Stolzen, 
Цитата

В принципе, подобный функционал можно реализовать средствами java script 

Вы имеете ввиду, используя Beautiful Soup? (кстати для общего развития мне бы интересно было узнать, откуда такое прикольное название)  Не могу найти примера, как из JavaScript обращаться к Python.  

Примеры то нашел, но вот ни один не сработал. То ли я тупой, то ли лыжи не едут. Вот эту страницу (ну и соседние вкладки) я постарался оочень внимательно изучить. Как я понял, там настоятельно убеждают, что никаких проблем со встраиванием Питона в веб страницу нет, достаточно, показать ссылки на их ресурсы, если работать он-лайн, либо качнуть ихние библиотеки и в разметке сослаться на них... Но я так и делал. Но ничего не сработало... Сильверлайт установлен, ссылки дал. Что еще забыл? 

Это сообщение отредактировал(а) CaptainNemo - 24.5.2011, 03:08
PM MAIL WWW ICQ Skype GTalk   Вверх
Stolzen
Дата 24.5.2011, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Я имел ввиду, написать на чистом js без python вообще. 
http://forum.vingrad.ru/forum/topic-289485.html
http://www.google.ru/search?q=%D0%BF%D0%B0...+xml+javascript

Что касается прикручивания питона к js - я никогда не пробовал, как-то мельком видел - структура языка питонова (отступы, и т.п.), а по сути - джава скрипт. 



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


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 5.6.2008
Где: White Russia, Min sk

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



Stolzen, Да я пробовал до этого коброй . Но там как-то всё хитро написано, что без бутылки трудно разобраться, как с ней работать. По супу есть хорошая документация . Написано всё четко и последовательно. Поэтому я и дался на питоне код писать. Думал, что решу свою задачку "малой кровью"... Но коли так, буду пробовать через Java Script.

Может подскажете где глянуть примеры, как работать с коброй? Или подскажете какой-либо хороший (ну и понятный для новичка) парсер на js
Спасибо 

Это сообщение отредактировал(а) CaptainNemo - 24.5.2011, 10:54
PM MAIL WWW ICQ Skype GTalk   Вверх
Stolzen
Дата 24.5.2011, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Можно с помощью jQuery
http://www.switchonthecode.com/tutorials/x...ing-with-jquery

По мне, так самый удобный фреймворк для js


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


 




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


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

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