Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 7, 2013 07:31:36

besogonskiy
Зарегистрирован: 2013-12-07
Сообщения: 6
Репутация: +  -2  -
Профиль   Отправить e-mail  

самый первый вопрос новичка. Какую среду разработки скачать чтоб начать работать?

Здравствуйте! я здесь впервые и впервый раз буду писать программу на языке Python. Пока я ещё не знаю какой софт нужно скачать, чтоб можно было полноценно на компьютере с ОС Windows, создавать программы и их отлаживать, а так же получать контекстную помощь (help). Научите меня, подскажите название программ. Где их взять, я догадаюсь сам.

Офлайн

#2 Дек. 7, 2013 12:04:49

alexsis
Зарегистрирован: 2013-07-26
Сообщения: 148
Репутация: +  9  -
Профиль   Отправить e-mail  

самый первый вопрос новичка. Какую среду разработки скачать чтоб начать работать?

Для начала потребуется интерпретатор и текстовый редактор. В книге М. Лутца “Изучаем Python” довольно подробно описан процесс установки.

Офлайн

#3 Дек. 7, 2013 14:05:34

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

самый первый вопрос новичка. Какую среду разработки скачать чтоб начать работать?

besogonskiy
если вы не догадались попробовать Google, то ваша судьба уже предначертана. На этом форуме даны ответы на ваши вопросы и не один раз,а вы….



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Дек. 8, 2013 10:31:51

besogonskiy
Зарегистрирован: 2013-12-07
Сообщения: 6
Репутация: +  -2  -
Профиль   Отправить e-mail  

самый первый вопрос новичка. Какую среду разработки скачать чтоб начать работать?


JOHN_16
besogonskiyесли вы не догадались попробовать Google, то ваша судьба уже предначертана. На этом форуме даны ответы на ваши вопросы и не один раз,а вы….
почитал я форум и гугл. скачал Ninja и PyCharm , но на форуме нет однозначного ответа какая система является самой лучшей. да и обсуждения там с 2006 годов - за это время всё поменяться могло.А вы уж могли бы и подсказать, вместо того, чтобы умничать, раз уж не пожалели времени ответить в этой ветке.

Офлайн

#5 Дек. 8, 2013 11:15:54

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

самый первый вопрос новичка. Какую среду разработки скачать чтоб начать работать?

почитал я форум и гугл. скачал Ninja и PyCharm , но на форуме нет однозначного ответа какая система является самой лучшей. да и обсуждения там с 2006 годов - за это время всё поменяться могло.А вы уж могли бы и подсказать, вместо того, чтобы умничать, раз уж не пожалели времени ответить в этой ветке.

Как бы Вам сказать, чтобы не обидеть.
Вы, когда жениться соберётесь, не спрашивайте у друзей, какая невеста самая красивая ибо мнение большинства вполне может не совпадать с Вашими вкусами.
скачал Ninja и PyCharm
Ма-ла-дец! Буквально, красавчик. Теперь быстро и решительно попробуй и то и другое и реши для себя, что тебе интересней, а не следуй примеру буриданова осла (тот плохо кончил).



Офлайн

#6 Дек. 8, 2013 11:29:58

besogonskiy
Зарегистрирован: 2013-12-07
Сообщения: 6
Репутация: +  -2  -
Профиль   Отправить e-mail  

самый первый вопрос новичка. Какую среду разработки скачать чтоб начать работать?

FishHook
РыбаХук, а где здесь ошибка, скажи а?
http://millioner-online.ru/avtomatizaciya-yandeks-direkt

чето у моего друга этот скрипт не запускается, пришлось мне самому взяться за питон, хотя мне и своего родного 1С хватало для того, чтоб жить безбедно и иметь кучу возможностей иметь и известность и авторитет и востребованность. Но что поделать ради того, чтоб помочь другу, можно и Python освоить

Офлайн

#7 Дек. 8, 2013 11:54:02

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

самый первый вопрос новичка. Какую среду разработки скачать чтоб начать работать?

какая ошибка? Сайт работает.
Показывай скрипт сюда, будем разбираться в чем проблема



Офлайн

#8 Дек. 8, 2013 12:01:04

besogonskiy
Зарегистрирован: 2013-12-07
Сообщения: 6
Репутация: +  -2  -
Профиль   Отправить e-mail  

самый первый вопрос новичка. Какую среду разработки скачать чтоб начать работать?

FishHook
какая ошибка? Сайт работает. Показывай скрипт сюда, будем разбираться в чем проблема
на самом деле стыдно самому. Я попытаюсь разобраться сам. Но ввиду того, Что только Hello World удалось пока поднять, сразу не пойму что делать. вот скрипт. БУду сам разбираться но и здесь выложу.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os, re, random, time
 
with open('config.txt') as f: config = dict([tuple(line.split('//')[0].rstrip().split(':')) for line in f.read().splitlines()]) # Настройки
with open('yndx.txt') as f: all_accounts = f.read().splitlines() # Все аккаунты для работы
with open('yndx.txt') as f: login, pwd = [acc for acc in f.read().splitlines() if len(acc.split(':')) == 2][0].split(':') # Логин и пароль от аккаунта
 
print u"\nБудем использовать аккаунт - %s\n" % login
 
# ---------- Настройки
company_number = int(config['start_number']) # Номер кампании
company_name = config['company-name'] # Название кампании
title = config['title'] # Заголовок объявления
text = config['text'] # Текст объявления
domain = config['domain'] # Домен используемый в объявлении
keywords = config['keywords'] # Ключевые слова
# ----------
def direct_starter(): # Функция запуска бота
    resp = '' # По умолчанию ответ не определен
    
    while resp != '0': # До тех пор остаемся в программе
    
        print u"Что будем делать?\n\n\t[any number] - Создать кампании в Я.Директе\n\t0 - Выход из программы\n"
        resp = str(raw_input('How much company do you wish to create?: '))
        if not re.search('\d', resp): print u"\nНужно выбрать число! От 0 до 10\n"; continue
        
        if resp != '0':
            bot = Direct_BOT(int(resp)) # Запускаем бота на нужное количество действий
            bot.start() # Начинаем работу
            
    with open('yndx.txt', 'w') as f: # В конце работы перезаписываем файл с аккаунтами
        for acc in all_accounts:
            if login in acc: # Если аккаунт который мы использовали для работы попался на текущей итерации
                f.write('%s:%s\n' % (acc, keywords)) # Сохраняем его + ключевик
            else: f.write('%s\n' % acc) # Иначе оставляем все как есть
class Direct_BOT(object): # Класс работы с Я.Директом
 
    def __init__(self, actions_number): # Конструктор
        self.actions_number = actions_number # Необходимое количество кампаний
        self.current_number = company_number # Текущий номер кампании
        self.space_number = 1 # Число пробелов которые мы ставим после названия кампании (перед цифрой)
        self.auth_again = False # Пометка об авторизции бота
        self.second_step_again = False # Пометка о проходе 2-ого шага создания объявления
        self.third_step_again = False # Пометка о проходе 3-ого шага создания объявления
        self.new_company_ckick = False # Пометка о клике по даче нового объявления
        self.br = webdriver.Firefox(); time.sleep(1) # Создаем браузер
        self.br.maximize_window() # И раскрываем его полностью
    
    def go_to_moderate(self): # Последний шаг, отправка кампании на модерацию
        try:            
            self.br.find_element_by_xpath('//input[@id="accept"]').click(); time.sleep(random.uniform(1, 2)) # Говорим что согласны с условиями
            self.br.find_element_by_xpath('//input[@id="sbm_button"]').click() # Нажимаем кнопку "Заказать"
            while re.search(r'Контрольные цифры'.decode('cp1251'), self.br.page_source): # Если выпала капча
                print u"\n* ----- ВЫПАЛА КАПЧА, ВВЕДИТЕ ЕЁ ----- *\n"; time.sleep(random.uniform(5, 15))
        except Exception as err: print u"\nВозникла ошибка - '%s' на этапе отправки объявления на модерацию, спим и пробуем заного ...\n" % str(err); time.sleep(random.uniform(1, 3)); return 0
        
        return True # Если успешно прошли данный этап - переходим к следующему
        
    def third_step(self): # Проходим третий шаг создания кампании
        try:           
            print u"Минимальная цена клика по первому ключевику - %s, устанавливаем её ..." % self.min_price
            self.br.find_element_by_name('val-0_1').click(); time.sleep(random.uniform(1, 1)) # Кликаем по текущему значению цены
            for i in range(7): self.br.find_element_by_name('val-0_1').send_keys((lambda: self.third_step_again and u'\ue003' or u'\ue017')()); time.sleep(.1) # Удаляем нули с точкой 4 раза (в сумме)
            self.br.find_element_by_name('val-0_1').send_keys(str(random.randint(50, 299))); time.sleep(random.uniform(1, 1)) # Устанавливаем цену клика
            self.br.find_element_by_name('val-0_1').send_keys(Keys.RETURN); time.sleep(random.uniform(1, 1)) # И нажимаем Enter
            self.br.find_element_by_xpath('//input[@class="b-form-footer__action b-edit-prices-form__submit"]').click(); time.sleep(random.uniform(1, 3)) # Переходим к премодерации
            self.br.find_elements_by_xpath('//input[@type="submit"]')[1].click(); time.sleep(random.uniform(1, 3)) # Отправляем кампанию на модерацию
            
            while re.search(r'Контрольные цифры'.decode('cp1251'), self.br.page_source): # Если выпала капча
                print u"\n* ----- ВЫПАЛА КАПЧА, ВВЕДИТЕ ЕЁ ----- *\n"; time.sleep(random.uniform(5, 15))
            
            self.third_step_again = True # Делаем пометку о том, что мы уже проходили 1 раз 3-ий этап создания объявления
        except Exception as err: print u"\nВозникла ошибка - '%s' на 3 этапе создания объявления, спим и пробуем заного ...\n" % str(err); time.sleep(random.uniform(1, 3)); return 0
        
        return True # Если успешно прошли данный этап - переходим к следующему
        
    def second_step(self): # Проходим второй шаг создания кампании
        try:
        
            if self.second_step_again: # Если ранее на втором шаге была ошибка и мы начали его по новой - стираем оставшиеся поля
                print u"Второй шаг уже был ранее пройден, значит очищаем оставшиеся поля ..."
                self.br.find_element_by_xpath('//div[@class="b-spell-checker__frame"]').clear(); time.sleep(.5)
                self.br.find_element_by_xpath('//div[@class="b-spell-checker__frame b-spell-checker__frame_multiline_yes"]').clear(); time.sleep(.5)
                self.br.find_element_by_xpath('//input[@class="b-form-input__input b-banner-form-href__href CopyForms-Url"]').clear(); time.sleep(.5)
                self.br.find_element_by_xpath('//textarea[@class="wide mandatory b-word-suggestions__phrases"]').clear(); time.sleep(.5)
        
            self.br.find_element_by_xpath('//div[@class="b-spell-checker__frame"]').send_keys(title.decode('cp1251')); time.sleep(random.uniform(1, 1)) # Вставляем заголовок объявления
            self.br.find_element_by_xpath('//div[@class="b-spell-checker__frame b-spell-checker__frame_multiline_yes"]').send_keys(text.decode('cp1251')); time.sleep(random.uniform(1, 1)) # Вставляем текст объявления
            self.br.find_element_by_xpath('//input[@class="b-form-input__input b-banner-form-href__href CopyForms-Url"]').send_keys(domain.decode('cp1251')); time.sleep(random.uniform(1, 1)) # Вставляем ссылку объявления
            self.br.find_element_by_xpath('//textarea[@class="wide mandatory b-word-suggestions__phrases"]').send_keys(keywords.decode('cp1251')); time.sleep(random.uniform(1, 1)) # Вставляем ключи объявления
            self.br.find_element_by_xpath('//input[@class="b-banner-edit-validate__submit"]').click(); time.sleep(random.uniform(1, 3)) # Переходим ко третьему этапу
            
            while re.search(r'Контрольные цифры'.decode('cp1251'), self.br.page_source): # Если выпала капча
                print u"\n* ----- ВЫПАЛА КАПЧА, ВВЕДИТЕ ЕЁ ----- *\n"; time.sleep(random.uniform(5, 15))
            
            self.second_step_again = True # Делаем пометку о том что второй шаг уже пройден
            self.min_price = re.findall(r'class="b-phrases-list-phrase__min">(.+?)<', self.br.page_source)[0] # Ловим минимальную цену клика
        except Exception as err: print u"\nВозникла ошибка - '%s' на 2 этапе создания объявления, спим и пробуем заного ...\n" % str(err); time.sleep(random.uniform(1, 3)); return 0
        
        return True # Если успешно прошли данный этап - переходим к следующему
        
    def first_step(self): # Проходим первый шаг создания кампании
        try:
            # self.br.find_element_by_name('name').clear(); time.sleep(random.uniform(1, 1)) # Очищаем название кампании по умолчанию
            # self.br.find_element_by_name('name').send_keys(company_name.lower().decode('cp1251')); time.sleep(random.uniform(1, 1)) # Устанавливаем название кампании
            # self.br.find_element_by_name('name').send_keys('%s%i' % (' ' * self.space_number, self.current_number)); time.sleep(random.uniform(1, 1)) # Дополняем название текущим номером кампании
            self.br.find_element_by_xpath('//input[@class="b-campaign-edit__submit"]').click(); time.sleep(random.uniform(1, 3)) # Переходим ко второму этапу
            
            while re.search(r'Контрольные цифры'.decode('cp1251'), self.br.page_source): # Если выпала капча
                print u"\n* ----- ВЫПАЛА КАПЧА, ВВЕДИТЕ ЕЁ ----- *\n"; time.sleep(random.uniform(5, 15))
            
            if not self.second_step_again: self.br.find_element_by_xpath('//span[@class="b-form-switch__button"]').click(); time.sleep(random.uniform(1, 2)) # Говорим что у нас нету адреса и телефона
        except Exception as err: print u"\nВозникла ошибка - '%s' на 1 этапе создания объявления, спим и пробуем заного ...\n" % str(err); time.sleep(random.uniform(1, 3)); self.space_number += 1; return 0
         
        return True # Если успешно прошли данный этап - переходим к следующему
        
    def auth(self): # Авторизация и проверка выбора интерфейса
        try:
            if not self.auth_again: # Если еще ниразу не авторизовывались
                self.br.get('https://passport.yandex.ru/passport?mode=auth&msg=direct&retpath=https%3A%2F%2Fdirect.yandex.ru%2Fregistered%2Fmain.pl'); time.sleep(random.uniform(2, 5)) # Переходим на страницу авторизации Я.Директа
                self.br.find_element_by_name('login').send_keys(login); time.sleep(random.uniform(1, 1)) # Вводим логин
                self.br.find_element_by_name('passwd').send_keys(pwd); time.sleep(random.uniform(1, 1)) # Вводим пароль
                self.br.find_element_by_xpath('//input[@type="submit"]').click(); time.sleep(random.uniform(1, 2)) # Входим в систему               
                self.auth_again = True # Пометка о том, что следующая авторизация - повторная
            else: # Если уже авторизовались
                self.br.get('https://direct.yandex.ru/registered/main.pl?cmd=editCamp&new_camp=1&mediaType=text'); time.sleep(random.uniform(1, 3)) # Тогда просто нажимаем кнопку создания объявления
                self.new_company_ckick = True # Помечаем что мы уже кликнули на эту кнопку
            
            while re.search(r'Контрольные цифры'.decode('cp1251'), self.br.page_source): # Если выпала капча
                print u"\n* ----- ВЫПАЛА КАПЧА, ВВЕДИТЕ ЕЁ ----- *\n"; time.sleep(random.uniform(5, 15))
 
            try:
                try: self.br.find_element_by_xpath("//select[@class='b-choose-country__select']/option[@value='225']").click(); time.sleep(random.uniform(1, 1)) # Выбираем Россию
                except: time.sleep(1)
                self.br.find_element_by_xpath('//input[@id="b-choose-interface-type__radio-std"]').click(); time.sleep(random.uniform(1, 1)) # Выбираем профессиональный интерфейс
                self.br.find_element_by_xpath('//input[@type="submit"]').click(); time.sleep(random.uniform(1, 3)) # Продолжаем
            except Exception as err: # Если на этом аккаунте уже есть созданные кампании
                print u"Выбор интерфейса не требуется, на аккаунте %s уже есть созданные кампании ...\n" % login
                if not self.new_company_ckick: self.br.get('https://direct.yandex.ru/registered/main.pl?cmd=editCamp&new_camp=1&mediaType=text'); time.sleep(random.uniform(1, 3)) # Тогда просто нажимаем кнопку создания объявления
        except Exception as err: print u"\nВозникла ошибка - '%s' на этапе авторизации, спим и пробуем заного ...\n" % str(err); time.sleep(random.uniform(1, 3)); return 0
        
        return True # Если успешно прошли данный этап - переходим к следующему
        
    def start(self): # Создание браузера и контроль за работой бота
        auth, step1, step2, step3, moderate = False, False, False, False, False # По умолчанию ни 1 из действий не сделано
        print u"\nВыбранное количество действий - '%i', запускаем бота ...\n" % self.actions_number
    
        for i in range(self.actions_number): # Создаем необходимое количество кампаний
        
            # --------------- Блок создания кампании
            while not auth: auth = self.auth(); time.sleep(1) # Авторизуемся и проверяем, есть уже кампании или нет
            while not step1: step1 = self.first_step(); time.sleep(1) # Устанавливаем основную информацию
            while not step2: step2 = self.second_step(); time.sleep(1) # Устанавливаем параметры объявления
            while not step3: step3 = self.third_step(); time.sleep(1) # Устанавливаем цену клика по ключевикам
            while not moderate: moderate = self.go_to_moderate(); time.sleep(1) # Отправляем новую кампанию на модерацию
            print u"\n\n* ----- Кампания '%s %i' создана! ----- *\n\n" % (company_name.decode('cp1251'), self.current_number)
            self.current_number += 1 # В конце увеличиваем номер кампании для всех последующих (что бы не сливались)
            self.space_number = 1 # Восстанавливаем число пробелов по умолчанию
            auth, step1, step2, step3, moderate = False, False, False, False, False # Снимаем успешность всех этапов (т.к. проходим круг заного)
            self.second_step_again = False # Снимаем пометку о том, что второй шаг уже пройден (т.к. создаем новое объявление)
            self.third_step_again = False # Снимаем пометку о том, что третий шаг уже пройден (т.к. создаем новое объявление)
            self.new_company_ckick = False # Снимаем пометку о том что мы кликали на кнопку по даче объявления
            time.sleep(random.uniform(3, 7)) # После создания каждой кампании - спим
            # ---------------
direct_starter(); raw_input('\nPress Enter to exit: ')
def timer(func): # Бенчмарк
    def wrapper():
        t1 = time.clock()
        print u"Direct_BOT начинает работу ...\n"
        func()
        print u"\nDirect_BOT завершил работу за - %.2f секунд" % (time.clock() - t1)
    return wrapper

Отредактировано FishHook (Дек. 8, 2013 12:16:41)

Офлайн

#9 Дек. 8, 2013 12:08:30

mabut
От:
Зарегистрирован: 2012-02-25
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

самый первый вопрос новичка. Какую среду разработки скачать чтоб начать работать?

besogonskiy
Здравствуйте! я здесь впервые и впервый раз буду писать программу на языке Python. Пока я ещё не знаю какой софт нужно скачать, чтоб можно было полноценно на компьютере с ОС Windows, создавать программы и их отлаживать, а так же получать контекстную помощь (help). Научите меня, подскажите название программ. Где их взять, я догадаюсь сам.

pycarm от jetbrains, sublime Кстати pypy быстрее стандартного интерпретатора python, если много обсчитывать))



Лучше чем СПАСИБО, помощь другим

Отредактировано mabut (Дек. 8, 2013 12:08:48)

Офлайн

#10 Дек. 8, 2013 12:17:30

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

самый первый вопрос новичка. Какую среду разработки скачать чтоб начать работать?

besogonskiy
на самом деле стыдно самому. Я попытаюсь разобраться сам.
Это хорошо, а какая ошибка то?



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version