Сейчас мой скрипт работает следующим образом: я авторизируюсь с помощью 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, иногда застревает на одном и том же месте.
При этом сессия может восстановиться, потом снова прерваться. В общем я не нашел закономерности, из-за этого сижу в полной непонятке куда копать.
Добавлю сразу, что ссылки в строках парсятся нормально, там нет промахов, я это проверял.
Без посещения страницы "Подробнее" осечек нет вообще!
Вопрос: если теряется авторизация, как ее повторить и ВЕРНУТЬСЯ на нужную мне страницу для парсинга.