good_br
@good_br
учусь

Как исправить данный код?

Нашел статью решил проверить код, о возникает ошибка NameError: name 'proxies' is not defined , помогите исправить, я просто только учусь

Я как понимаю в список должны попадать прокси proxies = [] и далее строчке s = get_session(proxies) они воспроизводятся, но почему то они там не видны, видимо из=- за того что переменная proxies находится в функции, но я не знаю как это исправить .

import requests
import random
from bs4 import BeautifulSoup as bs

def get_free_proxies():
    url = "https://free-proxy-list.net/"
    # посылаем HTTP запрос и создаем soup объект
    soup = bs(requests.get(url).content, "html.parser")
    proxies = []
    for row in soup.find("table", attrs={"id": "proxylisttable"}).find_all("tr")[1:]:
        tds = row.find_all("td")
        try:
            ip = tds[0].text.strip()
            port = tds[1].text.strip()
            host = f"{ip}:{port}"
            proxies.append(host)
        except IndexError:
            continue
    return proxies


def get_session(proxies):
    # создаем сессию для отправки HTTP запроса
    session = requests.Session()
    # выбираем случайным образом один из адресов
    proxy = random.choice(proxies)
    session.proxies = {"http": proxy, "https": proxy}
    return session

for i in range(5):
    s = get_session(proxies)
    try:
        print("Request page with IP:", s.get("http://icanhazip.com", timeout=1.5).text.strip())
    except Exception as e:
        continue
  • Вопрос задан
  • 140 просмотров
Пригласить эксперта
Ответы на вопрос 2
@bacon
s = get_session(proxies), откуда тут будет известно про proxies?
Ответ написан
igorzakhar
@igorzakhar
Ты, видимо, забыл эту строчку:
proxies = get_free_proxies()
перед:
s = get_session(proxies)

Предположу, что после написания статьи html код страницы уже успел измениться.
def get_free_proxies():
    url = "https://free-proxy-list.net/"
    # посылаем HTTP запрос и создаем soup объект
    soup = bs(requests.get(url).content, "html.parser")
    proxies = []
    for row in soup.find("table", attrs={"class": "table"}).find_all("tr")[1:]:
        tds = row.find_all("td")
        try:
            ip = tds[0].text.strip()
            port = tds[1].text.strip()
            host = f"{ip}:{port}"
            proxies.append(host)
        except IndexError:
            continue
    return proxies


>>> proxies = get_free_proxies()
>>> proxies
['85.195.120.157:1080', '142.82.48.250:80', '58.234.116.197:8193', ..., ....]
...
...
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 250 000 ₽
AGIMA Москва
от 250 000 ₽
23 мая 2022, в 04:14
10000 руб./за проект
23 мая 2022, в 00:03
3000 руб./за проект
22 мая 2022, в 23:58
2000 руб./за проект