Форум сайта python.su
Здравствуйте.
from mechanize import Browser
br = Browser()
br.open('https://passport.yandex.ru')
Ругается и вылетает:
Traceback (most recent call last):
File "C:\Documents and Settings\..........\clubs.py", line 39, in <module>
br.open('https://passport.yandex.ru/')
File "build\bdist.win32\egg\mechanize\_mechanize.py", line 209, in open
return self._mech_open(url, data, timeout=timeout)
File "build\bdist.win32\egg\mechanize\_mechanize.py", line 261, in _mech_open
raise response
httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt
Офлайн
Блин!
br.set_handle_robots(False)
и всй сработало!! )
ещё не совсем разобрался, что это означает, но работает!! Надеюсь, кому-то ещё пригодится )
Офлайн
Это означает отмену следования правилам описанных в Robots.txt
Только там где яндекс паспорт, не все так просто у меня получилось..
Если вы там просто логинитесь, думаю все ок будет, а если аки регите, то там половина формы на javascript. Если с помошью mechanize справитесь напишите )
Офлайн
Не, я не регаю акки.
Войти-то вошёл, а вот по сервисам Яши никак не получается сёрфать, сохраняя авторизацию. Там кроссдоменная авторизация или как это там называется.. В общем, пока всё чо нужно, делаю вручную :(
Есть идеи?
Офлайн
Идеи есть, но кривые - использовать win32com.
from win32com.client import Dispatch
ie = Dispatch("InternetExplorer.Application")
ie.Visible = 1
ie.Navigate("http://www.yandex.ru")
....
Офлайн
Хмм.. А как управлять управляющими элементами? Формы, кнопки, поля.. Авторизация то у меня и через механайз идет, а вот, стоит покинуть Паспорт - ничего не помогает. Еще попробую в куках заменить хост на звездочку или нужный сервис яши. Суть именно в управлении.
Кстати, могу выложить xml-логи сниффера, как происходит авторизация, с последующим присоединением к клубу на я.ру. Надо?
Офлайн
Как управлять ие - вот в чем вопрос..
Управляем через дум
берем документ
doc = ie.Document
while doc.readyState != "complete":
time.sleep(n)
text = ie.Document.body.innerHTML
text = unicode(text)
text = text.encode('ascii','ignore')
doc.bigForm.iname.value = "Степа"
doc.bigForm.fname.value = "Длинный"
doc.bigForm.login.value = login
doc.bigForm.submit()
ie.Navigate("javascript:getNewNames()")
Отредактировано (Авг. 16, 2009 12:59:00)
Офлайн
Хмм.. Спасибо. Покурю, конечно, маны, так как не понял почти. Но на готовом примере уже яснее. Благодарю. Так, конечно, памяти будет, наверное, кушаться не мало, ну да пофиг. Главное - результат! Еще раз, сенки :)
Офлайн
Для массовости. Например, в я.почте нету массовой сортировки писем. Например, мне надо все непрочитанные сделать прочитанными, а их 4К+ - не руками же всё это гребсти, особенно, на слабом компе. А я.почта довольно много хавает.
Кстати, у меня методы ie не работают - пишет, что “Сервер RPC недоступен.” :(
Traceback (most recent call last):
File "C:\Documents and Settings\Chrizt\Рабочий стол\ie.py", line 7, in <module>
doc = ie.Document
File "C:\Python26\lib\site-packages\win32com\client\dynamic.py", line 501, in __getattr__
ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
com_error: (-2147352567, '\xce\xf8\xe8\xe1\xea\xe0.', (0, None, None, None, 0, -2147467259), None)
Отредактировано (Авг. 16, 2009 15:46:17)
Офлайн
Traceback (most recent call last):
File "C:\Documents and Settings\Chrizt\Рабочий стол\ie.py", line 15, in <module>
doc.bigForm.iname.value = "Степа"
File "C:\Python26\lib\site-packages\win32com\client\dynamic.py", line 512, in __getattr__
raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.bigForm
Офлайн