Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 15, 2015 19:38:09

Notan1310
Зарегистрирован: 2014-09-14
Сообщения: 98
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с proxy. Они подвисают и делают мне проблему

Доброго времени суток. Помогите пожалуйста решить проблему с подвисанием proxy. Мне нужно при зависание прокси чтобы скрипт заново начинал отрабатывать с другим прокси пока все у него не получится
Вот с чем я работаю

# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import time, random
import threading
def like_post(login, pas, proxy): 
    time_sleep = 10
    service_args = [
        '--proxy='+str(proxy)+':8080',
        '--proxy-auth=RU******:**VNBAzs0A',
        '--proxy-type=HTTP',
        ]
    f1 = open(r'link_post.txt')
    post = f1.readlines()
    post_len = len(open(r'link_post.txt').readlines())
    f1.close()
    driver = webdriver.PhantomJS('/home/montana/phantomjs/bin/phantomjs', service_args=service_args)
    driver.set_window_size(1120, 550)
    driver.get('http://******.net')
    time.sleep(time_sleep)
    driver.find_element_by_xpath(".//*[@id='header']/a[8]").click()
    time.sleep(time_sleep)
    login = driver.find_element_by_xpath(".//*[@id='user_email']").send_keys(login)
    pwd = driver.find_element_by_xpath(".//*[@id='user_password']").send_keys(pas)
    driver.save_screenshot('test1.png') 
    driver.find_element_by_xpath(".//*[@id='loginPopupSubmitButton']").click()
    driver.save_screenshot('test2.png') 
    time.sleep(30)
    for i in range(len(post)):
        driver.get(str(post[i]).rstrip())
        time.sleep(time_sleep)
        driver.find_element_by_xpath(".//*[@id='fs6-like-btn']").click()
        driver.save_screenshot('test3.png')
        print 'like'
    driver.quit()
def main():
  
    try:
        like_post("login", "pass", "**.215.136.236")
        time.sleep(10)
    except:
        print 'Исключение '
        
if __name__ == '__main__':
    main()
Сейчас как вы можете видеть, если прокси подвис или “сдох” Срабатывает исключение. Помогите пожалуйста решить это проблему красиво и со вкусом. Может быть есть либа какая нибудь? Или типовое решение. Рад буду критике, но пожалуйста кидайте на ссылки в чужой “ красивый код”.

Офлайн

#2 Янв. 16, 2015 01:07:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10015
Репутация: +  857  -
Профиль   Отправить e-mail  

Работа с proxy. Они подвисают и делают мне проблему

Либо исправный прокси-сервер должен подбираться заранее, либо like_post() должна принимать список прокси-серверов. А лучше сделать и то, и то другое через две функции.

def like_post_over_proxies(login, pswd, proxies):
    for p in proxies:
        if is_active_proxy(p):
            like_post(login, pswd, p)
            return True
    return False



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version