Код: Выделить всё
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# Set up ChromeDriver service
service = Service(r"C:\Users\Rob\Downloads\chromedriver-win64\chromedriver-win64\chromedriver.exe") # Update path to ChromeDriver
# Set up Chrome options
chrome_options = Options()
chrome_options.add_argument("--start-maximized") # Start browser maximized
chrome_options.add_argument("--disable-blink-features=AutomationControlled") # Helps bypass bot detection
chrome_options.add_argument("--disable-infobars") # Removes Chrome's automation banner
# Initialize WebDriver for Chrome
driver = webdriver.Chrome(service=service, options=chrome_options)
try:
# Open the specified URL
driver.get("https://www.britishairways.com/travel/book/public/en_gb/flightList?onds=LON-NYC_2025-04-01,NYC-LON_2025-04-10&ad=1&yad=0&ch=0&inf=0&cabin=M&flex=LOWEST&ond=1")
# Wait for the cookie consent button and click it
try:
cookie_button = WebDriverWait(driver, 15).until(
EC.element_to_be_clickable((By.ID, "ensAcceptAll"))
)
cookie_button.click()
print("Cookie consent accepted.")
except Exception as e:
print("Cookie consent button not found or not clickable:", e)
# Optional: Add a delay to observe the page in the browser
time.sleep(60)
finally:
# Close the browser
driver.quit()
https://www. britishairways.com/nx/b/en/gb/
У меня нет доступа к API инструментов разработчика IAG, поэтому я пытаюсь использовать веб-интерфейс -Проверка программы Selenium/Python для достижения тот же результат.
Веб-страница, которую я хочу смоделировать с помощью Selenium, выглядит следующим образом:
https://www.britishairways.com/travel/b ... nf=0&cabin =M&flex=LOWEST&ond=1
Вышеупомянутый URL-адрес («Целевой URL») – это URL-адрес, на который я перенаправляюсь, когда посещаю главную страницу бронирования через
https://www.britishairways.com/nx/b/en/gb/
где я ввожу обратный путь из Лондон – Нью-Йорк с 1 апреля 2025 г. по 10 апреля. 2025 г., эконом-класс для одного взрослого.
Когда я посещаю целевой URL-адрес и использую инструменты разработчика в Chrome для определения запросов Fetch/XHR на вкладке «Сеть», я обнаружил указанный ниже URL-адрес. как запрос POST, который предоставляет информацию о рейсе (цены и время), который я ищу. Это будет информация, которую я хочу загрузить через свою программу после того, как веб-страница будет обработана с помощью Selenium.
Код: Выделить всё
https://www.britishairways.com/api/sc4/badotcomadapter-paatwo/rs/v1/flightavailability/search;ondwanted=1?metasearchdata=LON_NYC_2025-04-01&metasearchdata=NYC_LON_2025-04-10&locale=en_GB

Почему это не работает? Возможно, в веб-сайт встроен какой-то код предотвращения автоматизации, который определяет, что я захожу через Selenium, и запрещает загрузку динамических данных?
Я даже пробовал просто загружать следующий URL-адрес с использованием Selenium, который отображается нормально:
https://www.britishairways.com/nx/b/en/gb/
А затем ввел нужные мне параметры поиска (обратный рейс из Лондона в Нью-Йорк с 1 апреля 2025 г. по 10 апреля 2025 г., в эконом-классе для одного взрослого). Однако проблема остается той же (поскольку я, по сути, перехожу к тому же целевому URL-адресу, который не отображается).
Буду очень признателен за любую помощь.
РЕДАКТИРОВАТЬ: Если это полезно, вот вывод на моей консоли Python. Я оставляю веб-страницу открытой на достаточное время для загрузки, но она все равно не загружается.
DevTools прослушивает ws://127.0.0.1 :56232/devtools/browser/b219c155-3fa3-464e-9ed3-ba1330ad5f76
Согласие на использование файлов cookie принято.
Создан делегат TensorFlow Lite XNNPACK для ЦП.
Подробнее здесь: https://stackoverflow.com/questions/793 ... tomation-c
Мобильная версия