[Python] вопрос/ответ.

Discussion in 'Python' started by De-visible, 21 Jan 2009.

  1. H1Z

    H1Z Elder - Старейшина

    Joined:
    23 Mar 2007
    Messages:
    103
    Likes Received:
    61
    Reputations:
    6
    "что питон будет угадывать" я думал что он настолько хорош что умеет даже это =))
    А если серьёзно, то я привык к Qt где задаешь сразу тип прокси HTTP/SOCKS, а вот в питоне такого нет. А то что питон умеет пользоваться только HTTP прокси уже догадался, но перед тем как задать вопрос все таки надо было проверить тип вручную. Значит у madnet'a скрипт прокси врет, ведь там тип как SOCKS5. Вот я и думал что значит питон умеет работать с носками, хотя видел либу SocksiPy.
     
    1 person likes this.
  2. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Это особая, уличная магия ^_0
     
    1 person likes this.
  3. roddik

    roddik Member

    Joined:
    14 Jan 2009
    Messages:
    117
    Likes Received:
    13
    Reputations:
    0
    m0Hze, Вариант с перегруженным целевым сервером отпадает, так как если я перезапускаю скрипт, все идет ок

    Вот кусок основной кусок кода

    Code:
    def run(self):
            while True:
                proxy = self.plist.get()
    	    
    	    try:
    #Тут происходят нужные действия
                except Exception, e: #proxy ordered to live long
                    print proxy, e
    		
    		if self.log_file:
    		    print >>self.log_file, "Thread "+str(self.id)+": "+str(e)+"\n",
                    
                self.plist.task_done()
    То есть исключения вроде не должны быть причиной... В Queue.Queue() get по дефолту вроде blocking, так что, когда кончаются прокси, другой поток их освежает. В лог файле такая фигня: Сначала отмечаются все потоки, под конец активных визуально пару штук, последняя ошибка неактивных не дает никаких подсказок - обычный urlopen error
     
  4. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Больно смахивает на то, что проксей ему не хватает. Если реализована их очистка оттуда то это и может быть затык. Сделай следующей строчкой после получения прокси чтоб он выводил тебе какой поток получил прокси и саму прокси. Сделай логгирование на каждом шаге.
    P.S> http://dumpz.org/11933/ - посмотри там есть класс PROXYS, ваозможно он и решит твои проблемы...
     
    #404 login999, 14 Nov 2009
    Last edited: 14 Nov 2009
  5. whexp

    whexp Member

    Joined:
    30 Nov 2009
    Messages:
    88
    Likes Received:
    29
    Reputations:
    5
    rushter,
    Вот, посмотри: http://docs.python.org/library/re.html#re.sub
     
    1 person likes this.
  6. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    В цикле
    Code:
    while 1==1:
    
    ...
    
    ...
    
    происходит дозвон и соответственно сброс, обьявляешь до цикла переменную количества итераций и инкрементируешь в конце цикла и пишешь в файл
    Code:
    fd = open("log.txt", "w")
    # callsCounter наш счетчик
    fd.write(str(callsCounter))
    
    п.с. тут нечего сложного нету можно освоить за один день )
     
    #406 razb, 3 Dec 2009
    Last edited: 3 Dec 2009
  7. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Code:
    # declaration
    callsCount = 0
    # inc
    callsCount += 1
     
  8. iv.

    iv. Elder - Старейшина

    Joined:
    21 Mar 2007
    Messages:
    1,183
    Likes Received:
    438
    Reputations:
    107
    И как же?

    Странно =)) Такой код компилироваться как раз не дожен. Вообще в конец нужно вставить fd.close() для приличия.

    Перед fd.write(str(callsCounter)) отступ где? Очевидно вместо callsCounter надо писать callsCount

    Отступ перед callsCount += 1

    PS: в целом быдлокод - не ок :(
     
    #408 iv., 4 Dec 2009
    Last edited: 4 Dec 2009
    1 person likes this.
  9. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Под вынь7 у одного юзера wxpython приложение так и не запустилось.
    Но вот насчет скорости - хз, хз. Ты лучше сравни pyCURL и python+urllib2, а не PHP+CURL и Python+urllib2. Сам CURL однозначно быстрее urllib2.
     
  10. alextoun

    alextoun Вылет с Трассы

    Joined:
    7 May 2006
    Messages:
    563
    Likes Received:
    216
    Reputations:
    96
    Попробуй с 3-ей веткой
    Резвее идет.
     
  11. [Dezzter]

    [Dezzter] Elder - Старейшина

    Joined:
    26 Nov 2007
    Messages:
    182
    Likes Received:
    131
    Reputations:
    3
    Где можно на русском почитать про модули re, urllib и urllib2 ?

    Официальную документацию на англ пробовал читать, из-за отсутсвия хороших знаний англ не особо понял.. По этому хотелось бы на русском почитать про данные модули)
     
  12. whexp

    whexp Member

    Joined:
    30 Nov 2009
    Messages:
    88
    Likes Received:
    29
    Reputations:
    5
    [Dezzter], врятли, я не видел. да и вообще нужно анг. язык учить. можешь спросить, что не понятно - объясню.
     
    1 person likes this.
  13. [Dezzter]

    [Dezzter] Elder - Старейшина

    Joined:
    26 Nov 2007
    Messages:
    182
    Likes Received:
    131
    Reputations:
    3
    Да понятно, в школе просто бездельничал, а щас времени нету на изучение :)
    Спасибо, но практически всё не понятно) Пока нечего и спрашивать то, просто хотел изучить данные модули, т.к. знаю, что скоро они мне понадобятся)

    Придётся пользоваться переводчиком, гуглом, чужими сорцами и множеством экспериментов :)
     
    1 person likes this.
  14. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Без знания инглиша понимания как такового не будет (либо придёт оно очень нескоро, и с трудом).
    Python "интуитивно понятен", но только в том случае, если инглиш знаешь. Лучше потрать месяц на изучение английского, тогда проще будет. Доков нормальных на русском по питону днём с огнём не найдешь. Что может тебе помочь - Dive Into Python. Есть перевод на русский, все рекомендуют, но лично я не читал, если нужно просто вводное то почитай учебник на wikibooks, но там об этих модулях практически ничего нет. Еще порыскай Python 2.5 Reference card - охренетельная вещь (Процентов 70 тупорылых вопросов отпадут сами по себе) - ИМХО это пример идеальных доков (кратко и обо всем (на базовом уровне)). И вот Python Reference card я бы на твоём месте перевел - оно того стоит...
     
    1 person likes this.
  15. alextoun

    alextoun Вылет с Трассы

    Joined:
    7 May 2006
    Messages:
    563
    Likes Received:
    216
    Reputations:
    96
    если что, то вот
    http://rgruet.free.fr/PQR25/PQR2.5.html
    Учи инглиш.
    ВСе самое вкусное именно на нем.
     
    1 person likes this.
  16. [Dezzter]

    [Dezzter] Elder - Старейшина

    Joined:
    26 Nov 2007
    Messages:
    182
    Likes Received:
    131
    Reputations:
    3
    Ну хз хз, 4 дня питон учу.. Удивляюсь своим успехам) "Не читая книги" мини программки на лету пишу, ну так, подглядываю чисто структуру посмотреть, не более того! Ну думаю, предыдущие знания программирования дают знать о себе :) Типы, операции, инстукции на лету схавал =)
    Ну за месяц не выучишь + времени нету :(
    Обязательно найду
    Хехе, я как раз читаю в связке эту книгу и книгу Лутца "Изучаем Питон, третье издание"

    Но ни там, ни там нету про эти модули практически ни чего, буквально пару строк((
    Попробую юзать в связке с переводчиком, думаю всё получится.. Ибо я многое понимаю, видя примеры, иногда даже пояснения читать не приходится)

    Спасибо, воспользуюсь вашими советами :)
     
    1 person likes this.
  17. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Ну лично я имел ввиду http://home.uchicago.edu/~gan/file/python.pdf
    У самого распечатка лежит. Жалею о том, что с самого начала ее не увидел - сколько времени бы сэкономил...
     
  18. [Dezzter]

    [Dezzter] Elder - Старейшина

    Joined:
    26 Nov 2007
    Messages:
    182
    Likes Received:
    131
    Reputations:
    3
    Тренируюсь щас с POST авторизациями.. Решил попробовать на ачате.

    Вот сделал код:
    PHP:
    import urllib
    import urllib2
    import cookielib

    cookie 
    cookielib.CookieJar()
    opener urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
    urllib2.install_opener(opener)

    user_agent 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT'
    headers = { 'User-Agent' user_agent }

    url 'https://forum.antichat.ru/index.php'
    values = {'vb_login_username' '[Dezzter]',
             
    'vb_login_password' 'пасс'}

    data urllib.urlencode(values)
    req urllib2.Request(urldataheaders)
    response urllib2.urlopen(req)
    the_page response.read()

    print 
    the_page
    Выполняю скрипт, получаю вот что:
    Погуглил про Referrer в питоне, что то вообще ни чего не нашёл.. Нашёл только реализацию с курлом :(
    PHP:
    curl.setopt(HTTPHEADER,["Referer: https://stat.mrk/cgi-bin/traff/ipastat.cgi"])
    И вообще, код правильный? Если бы не referrer, то работало бы ?
     
    #418 [Dezzter], 10 Dec 2009
    Last edited: 10 Dec 2009
  19. H1Z

    H1Z Elder - Старейшина

    Joined:
    23 Mar 2007
    Messages:
    103
    Likes Received:
    61
    Reputations:
    6
    Исправь на:
    Code:
    headers = { 'User-Agent' : user_agent,"Referer":"https://forum.antichat.ru/index.php" }
    
    Тебе всего лишь нужно было добавить Referer в headers ;)
     
    1 person likes this.
  20. [Dezzter]

    [Dezzter] Elder - Старейшина

    Joined:
    26 Nov 2007
    Messages:
    182
    Likes Received:
    131
    Reputations:
    3
    Спасибо, проблема с Referer решина, но!

    Я так понял дело в кукисах, т.к. авторизация не проходит успешно.

    Если посмотреть страницу, то в коде страницы видно, что я по прежнему не авторизован! :(