@DaniilSh

Как менять прокси в цикле? Или как создать сменяемость прокси?

Есть такой код:
class Proxy:      
    proxy_url = 'http://www.ip-adress.com/proxy_list/'     
    proxy_list = []      

    def __init__(self):  
        global result     
        r = requests.get(self.proxy_url)      
        str = html.fromstring(r.content)        
        result = str.xpath(".//tbody/tr/td/a/text()")
        self.list = result
        
    def get_proxy(self):
        for proxy in self.list:
            url = 'http://' + proxy
            try:
                r = requests.get('http://ya.ru', proxies = {'http': url})
                if r.status_code ==200:
                    return url
            except requests.exceptions.ConnectionError:
                continue

Он по идее парсит сайт, берёт с него список прокси, далее проверяет прокси на доступность, если он рабочий, то прокси используется в дальнейшем цикле запросов, если нет, то он проверяет остальные прокси и ищет рабочий. Запросы, в которых используются в дальнейшем эти прокси зациклены. Мне надо, чтобы каждый новый цикл с теми запросами использовал новый прокси. То есть программа должна выбирать рабочий прокси, проверять его на доступность, далее использовать его 1 раз в цикле запросов и каждый новый цикл использовать уже другой прокси.
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 1
15432
@15432
Системный программист ^_^
Ну, например, так
def get_proxy(self):
        while self.list:
            proxy = self.list.pop(0)
            url = 'http://' + proxy
            try:
                r = requests.get('http://ya.ru', proxies = {'http': url})
                if r.status_code ==200:
                    self.list.append(proxy)
                    return url
            except requests.exceptions.ConnectionError:
                continue

так при каждом запросе get_proxy(), прокся будет переноситься в конец списка проксей (а нерабочие и вовсе удаляться). и при следующем вызове вернется уже другой адрес
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы