@Bjornie
Изучаю Python

Requests теряет авторизацию, как исправить?

Сейчас мой скрипт работает следующим образом: я авторизируюсь с помощью Selenium, бегаю по динамическим страницам, в которых есть таблица, а в каждой строке по ссылке "Подробнее". Я передаю эту ссылку в BeautifulSoup, который в свою очередь авторизируется под другими данными, и уже оттуда тянет нужные мне данные.

Но я столкнулся с проблемой нестабильного парсинга. Это уже вторые сутки, когда я пытаюсь решить проблему, расставляя паузы и гугля различные решения, но пока мне не хватило опыта решить проблему. Мой код:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.select import Select
from urllib.parse import urlparse, parse_qs
import selenium.webdriver.support.ui as ui
import time
import requests
from bs4 import BeautifulSoup

login = 'QQQQQQ'
password = 'AAAA'
auth_page = 'http://site.ru/auth'
headers = {'User-Agent':'Mozilla'}
payload = {'user': login, 'pwd': password}

with requests.Session() as session:
    s = session.post(auth_page, data=payload, headers=headers)

def parse_content():
    soup = BeautifulSoup(driver.page_source, "lxml")
    lens = len(soup.select('#left_program > tbody > tr'))

    for i in range(1, lens+1):
        tr = soup.find(id="left_program_ctl"+ str(i) +"_row")
        ...
        details_link = tr.find('a').get('href')

        r = session.get("http://site.ru" + details_link, headers=headers)
        details_soup = BeautifulSoup(r.text, "lxml")
        details_den = details_soup.find(id="den")
        details_loc = details_soup.find(id="loc")
        details_prov = details_soup.find(id="prov")

        print(r.url)


В ответ получаю:
OK!!!!!!!!! www.site.ru/page/id_3/team_7
OK!!!!!!!!! www.site.ru/page/id_5/team_10
OK!!!!!!!!! www.site.ru/page/id_7/team_13
FAIL: www.site.ru/home
FAIL: www.site.ru/home?PHPSESSID=v46ip6ecfp0n5h8dvp1smukou6
FAIL: www.site.ru/home?PHPSESSID=eb7vblrhj135hcvae7dou5n5r7
FAIL: www.site.ru/home?PHPSESSID=rueiaoes5lblmfn0s10v2l9ip3


Т.е. 1, 2, 3 раз получилось авторизированно открыть страницу, во 4-й и последующие сессия потерялась (редирект на главную).

Мне не понятно в чем проблема, т.к. иногда спокойно открывается 20 ссылок, иногда 0, иногда застревает на одном и том же месте.

При этом сессия может восстановиться, потом снова прерваться. В общем я не нашел закономерности, из-за этого сижу в полной непонятке куда копать.

Добавлю сразу, что ссылки в строках парсятся нормально, там нет промахов, я это проверял. Без посещения страницы "Подробнее" осечек нет вообще!

Вопрос: если теряется авторизация, как ее повторить и ВЕРНУТЬСЯ на нужную мне страницу для парсинга.
  • Вопрос задан
  • 375 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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