#css #python-3.x #selenium #xpath #scrape
#css — код #python-3.x #селен #xpath #очистить
Вопрос:
Пожалуйста, найдите ниже XPATH, который я использую, чтобы узнать цену с сайта Myntra. Я могу получить доступ ко всем другим сайтам, кроме Myntra, и то же самое ниже XPATH работает в моей локальной системе Windows с Selenium, версией Python3 и с использованием драйвера Chrome.
Путь к драйверу : driver = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver", options=chrome_options);
имя_переменной = driver.find_element_by_xpath('//*[@id="mountRoot"]/div/div/div/main/div[2]/div[2]/div[1]/p[1]/span/strong').text
ссылка для справки: https://www.myntra.com/beauty-gift-set/kama-ayurveda/kama-ayurveda-round-the-clock-skincare-gift-set/12800176/buy
При размещении на компьютере EC2 ubuntu появляется ошибка ниже: Сообщение: нет такого элемента: невозможно найти элемент: {«метод»:»xpath»,»селектор»:»// * [@id =»mountRoot»]/ div / div / div /main /div[2]/div[2] / div [1]/p[1]/span/strong»}
Попробовал изменить XPATH, driver.find_element_by_xpath('//*[@class="pdp-price"]//*').text
но безуспешно.
Комментарии:
1. Он хорошо работал на Mac Catalina. Кстати, Xpath может скоро сломаться. Вы можете использовать лучшие, более короткие и устойчивые XPaths. Также CSS span.pdp-price> strong намного лучше.
Ответ №1:
Используйте приведенный ниже XPath
driver.find_element_by_xpath('//span[@class="pdp-price"]//strong').text
Или с помощью приведенного ниже селектора CSS
driver.find_element_by_css_selector('.pdp-price strong').text
Вышеуказанное работает, только если сайт находится в режиме GUI, тогда как для безголовых дисплеев доступ запрещен, прикрепленный ниже скриншот для справки. Поскольку приложение блокирует безголовый режим
Добавьте приведенный ниже аргумент user agent и загрузите веб-драйвер в параметры драйвера Chrome
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument("--headless")
chrome_options.add_argument(f'user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36')
Комментарии:
1. ошибка ниже: Сообщение: нет такого элемента: не удается найти элемент: {«метод»: «селектор css»,»селектор»:».pdp-цена сильная»} (Информация о сеансе: безголовый chrome = 87.0.4280.66)
2. странная вещь работает локально, если мы используем CSS и XPATH . Цена, которую я получаю: . 1050 (с префиксом точки). Что-то с версией проблемы в экземпляре EC2?
3. Сайт @Sharath блокирует безголовый режим попробуйте напечатать заголовок в безголовом режиме и режиме графического интерфейса. В безголовом режиме заголовок отображается как доступ запрещен, тогда как в режиме GUI печатается соответствующий заголовок попробуйте
4. @Mohammed есть ли какой-нибудь способ извлечь цену в безголовом режиме. Необходимо автоматизировать это на ежедневной основе на сервере EC2. Используя приведенные ниже аргументы для справки:
chrome_options.add_argument('--no-sandbox') chrome_options.add_argument("--headless") chrome_options.add_argument("--incognito")
5. @Sharath Обратитесь к обновленному ответу и попробуйте.
Ответ №2:
Просто добавьте эту опцию user-agent при запуске безголового Chrome: —user-agent=»Mozilla /5.0 (X11; Linux x86_64) AppleWebKit /537.36 (KHTML, как Gecko) Chrome / 91.0.4472.114 Safari /537.36″
chromeLauncher.launch({
chromeFlags: ["--headless", '--disable-gpu', `--user-agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"`],
chromePath: '/usr/bin/google-chrome'
})