@beginer123

Python Парсинг через прокси не работает?

Есть такой код
Код парсит страницы через разные прокси, и сохраняет в файлик
proxy_list содерижт разные прокси
Проблема в том что парсится только треть все страниц
Если я отключу прокси то получаю 100% результат
В ходе выполнения часто возникают различные ошибки которые я перехватываю и повторяю парсинг с другим прокси
Но почему все равно данные теряются?
Где я ошибся?
def parse(url):
    valid_request = False
    while not valid_request:
        try:
            tree = get_page_tree(url, proxy_list[random.randint(0, 20)])
            valid_request = True
        except:
            valid_request = False
........
Далее идет парсинг объектов со страницы и сохранение в файл


def get_page_tree(url,proxy_obj):
    r = requests.get( url , timeout=10, proxies = proxy_obj )
    return html.fromstring(r.content)

Пробовал разное время отклики, разные прокси, но проблема в том что он в принципе не должен терять данные т.кя поставил try except
  • Вопрос задан
  • 531 просмотр
Пригласить эксперта
Ответы на вопрос 2
@theg4sh
Для начала сделайте лог исключений:
except Exception as e:
  log_ex(e);
  valid_request = False;

Быть может Вы что-то да не учли.

Так же надо учесть, что прокси могут выдавать контент после 10s (так скорее всего и есть).
Большинство из забугорных proxy могут выдавать контент и после 60s, так что для начала отсейте долгие из списка. Кроме того, контент может быть подменен самой proxy в случае неудачи.

Попробуйте Tor наконец - ведь ваша цель сграббить контент сайта, который блокирует после n запросов в минуту?
Ответ написан
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Некоторые прокси подменяют контент.
Поэтому я в таких случаях предварительно тестировал список прокси, прогоняя через них запрос страницы с заранее известным контентом. Если данные страницы при этом искажались, либо их вообще не получалось получить - такой прокси удалялся из списка.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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