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

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

  1. login999

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

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Ну, у такой категории людей как Дикс то очень даже и пользуется.
    Более чем уверен, что ни о чём другом он даже не задумывался.

    Ну 100%, книжки пишут просто так. Маны это тоже для дуракофф.
    http://docs.python.org/modindex.html - Настоятельно рекомендую к прочтению. Потом таких вопросов не будет.
    Поддержки соксов "изкаропки" нет. Хочешь соксов без гемора - pyCURL в зубы и downgrade до Python2.5 (Под него есть сборка под Форточки). Хочешь погемориться - socksipy(Но это на уровне сокетов). Самый рульный вариант - это Twisted(если хорошо поискать, то есть модуль для поддержки соксов), но Twisted это асинхронные сокеты, следовательно Излом мозгофф обеспечен.
     
  2. login999

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

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    И не найдёт , ибо
    это значит Python2.5, а не Python2.6
     
  3. CyberHunter

    CyberHunter Active Member

    Joined:
    6 Jan 2010
    Messages:
    601
    Likes Received:
    116
    Reputations:
    37
    Скажите как это сделать:
    Есть текст, нужно написать одну строку и если она есть в тексте то тру и наоборот? Как это сделать?
    Читал о сравнении строк, как я понял, то нужно писать типа
    Code:
    a = ["текст"]
    b = ["строка"]
    a == b
    так? у меня что-то не получается :( . Интерпретатор 3.0.1.
     
  4. gold-goblin

    gold-goblin Elder - Старейшина

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    Тут появилась не понятка с циклами...
    есть цикл:
    Code:
    i = 54
    ....
    ....  #тута код
    while i < int(len(site)):
    Интерпретатор ругается что к переменной i обращаются до ее объявления...

    В чем трабл?
     
  5. gold-goblin

    gold-goblin Elder - Старейшина

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    Хе проблема решена.
    Заключалась в том что переменная i не была объявлена в функции где использовалась.
     
  6. Fallen Dick

    Fallen Dick New Member

    Joined:
    18 Dec 2009
    Messages:
    2
    Likes Received:
    2
    Reputations:
    0
    Имеется html код:
    Code:
    <li><a href="http://url/">анкор</a></li>
    
    Нужно как бы анкор спарсить) Всегда получалось, но тут ума дать не могу, ошибки так и сыпятся :(
    Ошибка в этой строке:
    Code:
    re_url = re.findall('\<li\>\<a href\=\".*\">(.*)\<\/a\>\<\/li\>', page_map)
    
    Сама ошибка:
    Code:
    Traceback (most recent call last):
      File "C:\Python26\ololo.py", line 9, in <module>
        re_url = re.findall('\<li\>\<a href\=\".*\">(.*)\<\/a\>\<\/li\>', page_map)
      File "C:\Python26\lib\re.py", line 177, in findall
        return _compile(pattern, flags).findall(string)
    TypeError: expected string or buffer
    
     
  7. CyberHunter

    CyberHunter Active Member

    Joined:
    6 Jan 2010
    Messages:
    601
    Likes Received:
    116
    Reputations:
    37
    Скажите можно ли прогу написанную на питоне преобразовать в ехе-файл?
    Т.е. чтобы не запускать каждый раз через смд.
     
  8. [Dezzter]

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

    Joined:
    26 Nov 2007
    Messages:
    182
    Likes Received:
    131
    Reputations:
    3
    py2exe тебе в помощь, сам не юзал, но говорят это полнейший бред)
     
  9. CyberHunter

    CyberHunter Active Member

    Joined:
    6 Jan 2010
    Messages:
    601
    Likes Received:
    116
    Reputations:
    37
    Почему бред? Кто юзал напишите.
     
  10. [Dezzter]

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

    Joined:
    26 Nov 2007
    Messages:
    182
    Likes Received:
    131
    Reputations:
    3
    Я только, что пробовал.. Вообще элементарный скрипт пробовал скомпилить, с кодировкой шлак получился и второй раз этот же скрипт скомпилил, вообще запускается и окно закрывается!

    Вообще поиск тебе в помощь, тему по py2exe уже много раз описывали) Я сам гуглил, инфы не мало видел.. везде по немногу =**
     
  11. taxpayer

    taxpayer Member

    Joined:
    17 Jan 2010
    Messages:
    31
    Likes Received:
    7
    Reputations:
    3
    Может потому что у тебя руки не из того места растут?
    #! -*- coding: cp866 -*-
    ну или утф-8, но я сильно сомневаюсь, что у тебя никсы


    Потому что ты два раза щёлкнул на ярлычок консольной программы print 'Hello'?

    CyberHunter, всё нормально, пи2ехе не бред, и писали его не долбоёбы. возьми мануальчик, учебничек, зачем тебе собирать здесь абсолютно не несущих информации посты?

    [Dezzter], не позорился бы

     
    #571 taxpayer, 22 Feb 2010
    Last edited: 22 Feb 2010
    1 person likes this.
  12. CyberHunter

    CyberHunter Active Member

    Joined:
    6 Jan 2010
    Messages:
    601
    Likes Received:
    116
    Reputations:
    37
    taxpayer у меня просто сейчас нет возможности скачать и посмотреть, в ближайшее время сам посмотрю.
     
  13. Ice_VeNOm

    Ice_VeNOm Member

    Joined:
    5 Sep 2009
    Messages:
    36
    Likes Received:
    9
    Reputations:
    0
    Antigate python 3.1

    Я вроде адаптировал функцию, но почему то выдает
    Сама функция

    Code:
    import urllib.request
    import urllib.parse
    import re
    import codecs
    import logging
    import http.client
    def send_cap(key, fn):
    	''' Отправляем капчу на anti-capcha.com
    		Вход:
    			key	- ключ на антикапче
    			fn		- файл с капчей
    		Выход:
    			id капчи	- в случае успеха
    			False	- неудача
    	'''
    	logging.info('--- Send captcha')
    	
    	
    	data = open(fn, 'rb').read()
    
    	# разделитель для данных
    	boundary= '----------OmNaOmNaOmNamo'
    
    	# тело HTTP-запроса
    	body = '''--%s
    Content-Disposition: form-data; name="method"
    
    post
    --%s
    Content-Disposition: form-data; name="key"
    
    %s
    --%s
    Content-Disposition: form-data; name="file"; filename="capcha.jpg"
    Content-Type: image/pjpeg
    
    %s
    --%s--
    
    ''' % (boundary, boundary, key, boundary, data, boundary)
    
    	# заголовки HTTP-запроса
    	headers = {'Content-type' : 'multipart/form-data; boundary=%s' % boundary}
    	# подключение к HTTP-серверу
    	h = http.client.HTTPConnection('antigate.com')
    	# посылка запроса
    	h.request("POST", "/in.php", body, headers)
    	# получение и анализ ответа HTTP-сервера
    	resp = h.getresponse()
    	data = resp.read()
    	h.close()
    	if resp.status == 200:
    		cap_id= int(data.split('|')[1])
    		return cap_id
    	else:
    		logging.error('Captcha not send: %s %s' % (resp.status, resp.reason))
    		return False
    
    
     
  14. [Dezzter]

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

    Joined:
    26 Nov 2007
    Messages:
    182
    Likes Received:
    131
    Reputations:
    3
    язык в очко засунь! :D
     
  15. taxpayer

    taxpayer Member

    Joined:
    17 Jan 2010
    Messages:
    31
    Likes Received:
    7
    Reputations:
    3
    Сейчас ты показал свои недалёкость и слабоумие. Вместо того, чтобы промолчать и проанализировать своё "авторитетное" мнение, ты брызжешь слюной в монитор, потому что тебя "умыли" с твоими 23 репутации.
     
  16. [Dezzter]

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

    Joined:
    26 Nov 2007
    Messages:
    182
    Likes Received:
    131
    Reputations:
    3
    ахахах, если бы я брызгал слюной в монитор, то не писал бы свой пост с улыбкой на лице.. можешь вздрочнуть на мою репутацию! =** ты явно не равнодушен к этим цифрам)

    кст, про пи2ехе это не моё мнение, лол бля, я сказал, что мне сказали несколько людей, более компетентные в этом вопросе, не более того =/

    так, что сам умойся камшотом :D
     
  17. KentPol

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

    Joined:
    3 Jun 2008
    Messages:
    94
    Likes Received:
    17
    Reputations:
    0
    Как на питоне реаизовать добавление контакта для смс в mail.ru.
    Документация по протоколу здесь: http://agent.mail.ru/ru/developers/protocol.html
     
  18. -tatarin-

    -tatarin- New Member

    Joined:
    9 Feb 2009
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    нашел в инете скрипт приглашения в друзья всех членов определенной группы вконтакте, но не знаю как запустить его, помогите пжл! Вот скрипт:
    Code:
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    #  Created by Nuclear Worm
    #
    #
    #  Vkontakte friends adder  #
    #  Version 0.1.a.1
    #
    
    import os, sys, time, re, logging,  sqlite3,  urllib,  urllib2,  cookielib
    try:
        from cStringIO import StringIO
    except ImportError:
        from StringIO import StringIO
    VERSION='0.1.a.1'
    COOKIEFILE = '/tmp/cookies1.lwp'
    LOG_FILENAME = '/tmp/dbg.log'
    logging.basicConfig(filename=LOG_FILENAME, filemode = 'w', level=logging.DEBUG,)
    
    class PostCommand:
        def __init__(self, url, req = None):
            self.request  = req
            self.headers = ''
            self.url = url
        
        def perform(self):
            cj = cookielib.LWPCookieJar()
            if os.path.isfile(COOKIEFILE): cj.load(COOKIEFILE)
            url_retr = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
            self.res =  url_retr.open(self.url,  self.request).read()
            cj.save(COOKIEFILE)
            logging.debug("Got to PostCommand request = %s, url = %s"%(self.request,  self.url))
            #self.res =  urllib.urlopen(self.url,  self.request).read()
            logging.debug("Got result = %s"%self.res)
    
    class GetCommand:
        def __init__(self, url):
            self.headers = ''
            self.url = url
        def perform(self):
            cj = cookielib.LWPCookieJar()
            if os.path.isfile(COOKIEFILE): cj.load(COOKIEFILE)
            url_retr = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
            self.res =  url_retr.open(self.url).read()
            cj.save(COOKIEFILE)
            logging.debug("Got to GetCommand url = %s"%(self.url))
            #self.res =  urllib.urlopen(self.url).read()
            logging.debug("Got result = %s"%self.res)
            
    class Vkontakte:
        def __init__(self,  mail,  password):
            self.mail = mail
            self.password = password
            
        def login(self):
            request = 'op=a_login_attempt&email=' + self.mail + '&pass=' + self.password +'&expire=0'
            req = PostCommand('http://vkontakte.ru/login.php', request)
            req.perform()
            my_id = re.compile('good(\d+)')
            logging.debug("Reply from login:\n" + req.res)
            if "failed" in req.res: return "Error! Check your login/pass!"
            else:
                myid = my_id.search(req.res).groups()[0]
                return myid
    
    class Group:
        def __init__(self, group_id):
            self.group_id = group_id
            
        def find(self,  datafile = None):
            if datafile: self.datafile = datafile
            else:
                print "No datafile to store your friends"
                sys.exit(1)
            gp = GetCommand('http://vkontakte.ru/search.php?group=' + self.group_id)
            gp.perform()
            logging.debug("Reply from login:\n" + gp.res)
            sum = re.compile('<strong>.* (\d+) .*\.</strong>')
            all_those = sum.search(gp.res).groups()[0]
            logging.debug("Sum of all users in group:\n" + all_those)
            friends = extract_id(gp.res)
            add_to_file(self.datafile, friends)
            time.sleep(1)
            for i in range(1, int(all_those)/10 + 1):
                gp = GetCommand('http://vkontakte.ru/search.php?&group=' + self.group_id + '&o=0&st=' + str(i*10))
                gp.perform()
                friends = extract_id(gp.res)
                add_to_file(self.datafile, friends)
                time.sleep(1)
            return sum
    
    
    class Friend:
        def __init__(self):
            pass
        def add(self,  datafile = None,  limit = None,  message = None):
            if datafile: self.datafile = datafile
            else: pass
            if limit: self.limit = limit
            else: self.limit = 20000000
            if message: self.message = message
            else: self.message=''
            df = open(self.datafile, 'r')
            ind = 0
            hash_find = re.compile('id="hash" value="([^"]+)"')
            for line in df.readlines():
                id = line.strip(' \n')
                fp = PostCommand('http://vkontakte.ru/friends_ajax.php', req = 'act=request_form&fid=' + id)
                fp.perform()
                #print fp.res
                for line1 in fp.res.split('\\n'):
                    if  hash_find.search(line1.replace('\\',  '')):
                        hash = hash_find.search(line1.replace('\\',  '')).groups()[0]
                        break
                try: hash
                except:
                    print "Hash not found"
                    logging.debug("Hash for user %s not found!"%id)
                    continue
                fp = PostCommand('http://vkontakte.ru/friends_ajax.php',  req = 'act=accept_friend&fid=' + id + '&hash=' + hash +'&verbose=1&message=' + self.message)
                fp.perform()
                ind +=1
                if ind >= self.limit: break
            return ind
        
    
    def extract_id(data):
        result = ''
        link = re.compile('<div class="info" id="row2(\d+)">')
        for line in StringIO(data).readlines():
            if link.search(line):
                result += link.search(line).groups()[0] + '\n'
        return result  
    
    
    def write_file(file, string):
        file1 = open(file, 'w')
        file1.write(string)
        file1.close()
    
    def add_to_file(file, data):
        file1 = open(file, 'a')
        file1.write(data)
        file1.close()
    
    def main(*args):
        mail,  password = sys.argv[1:]
        #mail = "[email protected]"
        #password = "mypass"
        ###  For Windows change to your path
        tmp_file = '/tmp/group_mems'
        mail = mail.replace("@","%40")
        mylogin = Vkontakte(mail,  password).login()
        #print "Your ID = ", mylogin
        link = raw_input("Give link of group: ")
        group_id = re.search('http://vkontakte.ru/club(\d+)',  link).groups()[0]
        gr = Group(group_id)
        gr.find(datafile = tmp_file)
        
        fr = Friend()
        print "Added ", fr.add(datafile = tmp_file),  " friends"
        ###  Limit fo adding 30 friends, example:
        #print "Added ", fr.add(datafile = '/tmp/group_mems',  limit = 30),  " friends"
        ###  Add friends with message "Куку", example
        #message_to_send = urllib.quote("Куку")
        #print "Added ", fr.add(datafile = '/tmp/group_mems',  message = message_to_send),  " friends"
    
    if __name__ == '__main__': main(sys.argv)
    Или вот сылка http://code.google.com/p/socialbot/source/browse/trunk/trunk/kontakt.py
     
  19. gold-goblin

    gold-goblin Elder - Старейшина

    Joined:
    26 Mar 2007
    Messages:
    917
    Likes Received:
    174
    Reputations:
    3
    Полистав скрипт видим строки
    def __init__(self, mail, password):
    self.mail = mail
    self.password = password
    что, куда я думаю понятно.

    но скрипт скорей всего не рабочий так как авторизация ВК менялась...
     
  20. -tatarin-

    -tatarin- New Member

    Joined:
    9 Feb 2009
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Спасибо большое)))))