Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 5, 2009 19:12:04

Chrizt
От: Владивосток
Зарегистрирован: 2009-07-18
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

Здравствуйте.

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.addheaders бла-бла User-agent на оперовский, да и вообще фигню писал, но ничего не вышло. та же фигня :(

Просто urrlib2.open('…') заходит без проблем.
Даже подумываю спереть оттдуа, залогинившись, куку, и с ней уже делать дела, якобы уже будучи авторизованным, если там так работает.

Но это не тот путь. не совсем удобно.



Подскажите, пожалуйста, что это и возможные решения, используя именно механайз с его функционалом!! Пллииизззззз!!!! А то уже бьюсь башкой об стену. честно :(



Офлайн

#2 Авг. 6, 2009 13:56:18

Chrizt
От: Владивосток
Зарегистрирован: 2009-07-18
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

Блин!
br.set_handle_robots(False)
и всй сработало!! )

ещё не совсем разобрался, что это означает, но работает!! Надеюсь, кому-то ещё пригодится )



Офлайн

#3 Авг. 8, 2009 19:46:05

topazz
От:
Зарегистрирован: 2008-09-12
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

Это означает отмену следования правилам описанных в Robots.txt

Только там где яндекс паспорт, не все так просто у меня получилось..

Если вы там просто логинитесь, думаю все ок будет, а если аки регите, то там половина формы на javascript. Если с помошью mechanize справитесь напишите )



Офлайн

#4 Авг. 9, 2009 01:32:41

Chrizt
От: Владивосток
Зарегистрирован: 2009-07-18
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

Не, я не регаю акки.
Войти-то вошёл, а вот по сервисам Яши никак не получается сёрфать, сохраняя авторизацию. Там кроссдоменная авторизация или как это там называется.. В общем, пока всё чо нужно, делаю вручную :(
Есть идеи?



Офлайн

#5 Авг. 16, 2009 08:48:38

topazz
От:
Зарегистрирован: 2008-09-12
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

Идеи есть, но кривые - использовать win32com.

from win32com.client import Dispatch

ie = Dispatch("InternetExplorer.Application")
ie.Visible = 1
ie.Navigate("http://www.yandex.ru")
....



Офлайн

#6 Авг. 16, 2009 10:53:31

Chrizt
От: Владивосток
Зарегистрирован: 2009-07-18
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

Хмм.. А как управлять управляющими элементами? Формы, кнопки, поля.. Авторизация то у меня и через механайз идет, а вот, стоит покинуть Паспорт - ничего не помогает. Еще попробую в куках заменить хост на звездочку или нужный сервис яши. Суть именно в управлении.
Кстати, могу выложить xml-логи сниффера, как происходит авторизация, с последующим присоединением к клубу на я.ру. Надо?



Офлайн

#7 Авг. 16, 2009 12:44:17

topazz
От:
Зарегистрирован: 2008-09-12
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

Как управлять ие - вот в чем вопрос..

Управляем через дум
берем документ

    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()
Выполняем js. Если какая либа умеет работать с js подскажите.

ie.Navigate("javascript:getNewNames()")
Сайт с примерами накрылся.. так что искать все через гугл
Вот надстройка над win32com http://www.mayukhbose.com/python/IEC/index.php
Так и не понял зачем если все это можно напрямую делать.



Отредактировано (Авг. 16, 2009 12:59:00)

Офлайн

#8 Авг. 16, 2009 12:58:24

Chrizt
От: Владивосток
Зарегистрирован: 2009-07-18
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

Хмм.. Спасибо. Покурю, конечно, маны, так как не понял почти. Но на готовом примере уже яснее. Благодарю. Так, конечно, памяти будет, наверное, кушаться не мало, ну да пофиг. Главное - результат! Еще раз, сенки :)



Офлайн

#9 Авг. 16, 2009 15:38:34

Chrizt
От: Владивосток
Зарегистрирован: 2009-07-18
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

Для массовости. Например, в я.почте нету массовой сортировки писем. Например, мне надо все непрочитанные сделать прочитанными, а их 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)
да и странно как-то: ИДЛЕ не выдаёт в подсказках никаким подобных методов. Я, конечно, не знаток питона, а у ж тем более - COM :(

p.s. Запустил в pywin - там вроде выполнилось, но опять же, doc.bigForm - такого нету :(



Отредактировано (Авг. 16, 2009 15:46:17)

Офлайн

#10 Авг. 16, 2009 16:13:08

Chrizt
От: Владивосток
Зарегистрирован: 2009-07-18
Сообщения: 88
Репутация: +  0  -
Профиль   Отправить e-mail  

mechanize.Browser() и Яндекс.Паспорт :(

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
ХОТЬ УБЕЙ! :(



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version