Задать вопрос
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
  • Вопрос задан
  • 249 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
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', ..., ....]
...
...
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы