Когда Selenium открывает страницу, она долго загружается и приостанавливает работу кода
Страница загружается мгновенно, если я сам открываю её через браузер. Если страница открывается драйвером Selenium'a, то она начинает загружаться 15-20 секунд. В это время работа кода останавливается, и приходится ждать окончания загрузки.
Я могу прервать загрузку страницы с помощью set_page_load_timeout()
, но я хочу понять возможно ли остановить загрузку проще или какая моя ошибка приводит к наличию этой загрузки.
Страницы, на которых я заметил подобное поведение: https://www.mlbb.ninja/statistics , https://crossoutdb.com/#preset=crafting.rarity=special.craftable=true.order=20desc.
from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.common.by import By
import time
options = webdriver.ChromeOptions()
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36")
browser = webdriver.Chrome(options=options)
# browser.set_page_load_timeout(2)
try:
browser.maximize_window()
browser.get("https://www.mlbb.ninja/statistics")
time.sleep(2)
browser.find_element(By.CSS_SELECTOR, "[aria-label='Win Rate']").click()
time.sleep(2)
except Exception as ex:
print(ex)
finally:
browser.quit()
Ответы (1 шт):
Ты не пробовал на bs4 сделать?
Добавь больше заголовков - это может помочь с долгой загрузкой
Слипы сделай больше если код не успевает за страницей( sleep или имеющийся в selenium Explicit Waits(почитай в доке))
Используя selenium попробуй куксы с браузера привязать
Решение с использованием request
import requests
s = requests.Session()
head = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36',
}
r = s.get('https://www.mlbb.ninja/', cookies={'Cookie': '_ga=GA1.1.502207133.17129******; _ga_21X1D9MLS4=GS1.1.1712940200.1.1*********'},headers=head)
print(r.status_code)
page_stat_all_hero = s.get('https://www.mlbb.ninja/_next/data/F1o2w-nSCB8AWpAZt4WfN/index.json',headers=head)
print(page_stat_all_hero.text) #тут json в котором вся инфа о каждом герое (от id до pick_rate)
#-->тут ты допустим берешь все id и клепаешь ссылки на каждого героя, переходишь по ним и парсишь<--#
one_hero = s.get('https://www.mlbb.ninja/heroes/88',headers=head)
print(hero.text) #тута уже парсишь к примеру текущую статистику или инфу по скилам