Получение элемента по его координатам BeautifulSoup python
У меня есть html верстка, которую я валидирую с помощью BeautifulSoup, можно ли как-нибудь получить содержание тэга зная его координаты? Например на ширине экрана в 1400px?
parsed_html = BeautifulSoup(response.text, "lxml")
price = parsed_html.findAll('span', class_='n7l')
print(price[0].text)
Ответы (1 шт):
Вы можете это сделать, используя один BeautifulSoup, но готовы ли вы написать свою библиотеку для представления страниц? BeautifulSoup сам по себе, лишь инструмент для редактирования и анализа. Нет такого магического способа, с помощью которого вы могли бы выпытать у него информацию о расположении элементов, поскольку он не умеет рендерить
Полагаю, что для ваших задач лучше использовать инструменты для тестирования Web-приложений, такие, как Selenium или Puppeteer, которые по сути своей являются программными библиотеками для управления браузером. В случае с Selenium делается всё достаточно просто:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get("http://www.python.org")
#Далее используем на странице функцию из JavaScript и возвращаем ответ в переменную element
element = driver.execute_script("return document.elementFromPoint(x, y);") #Вместо x и y подставляете координаты
Есть параметры для изменения размера окна, юзер агента, тестировать можно под все устройства, но это оставлю вам уже для личного изучения