Levman5
@Levman5
print(“Hello World!”)

Почему selenium не видит рекламу на сайте?

Привет, вот такая структура:
651bbbf1b1120858243221.png

Selenium видит только
<div id="yandex_rtb_R-A-2602770-3"><div></div></div>
, а что находится внутри - он не видит. В том числе там ничего нету и в driver.page_source.

Как я понимаю проблема в теневом DOM, но погуглив, я не очень понял как с ним работать.

Задача в том что бы найти в данном div первую ссылку и скопировать.
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 1
@ab1
Там ShadowDom -> Closed а не Opened
пример с пояснением
stackoverflow.com/questions/71282237/how-to-click-button-inside-shadow-root-closed-using-selenium-and-python

Примерно так c селениумом 4 и cdp_cmd
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
print("Браузер запускается, подождите немного")
try:
    
    driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': """
    Element.prototype._attachShadow = Element.prototype.attachShadow;
    Element.prototype.attachShadow = function () {
        return this._attachShadow( { mode: "open" } );
    };
    """})
    driver.get(url="https://podoq.ru")
    sleep(3)


    for _ in range(1, 7):
        driver.execute_script("window.scrollBy(0,document.body.scrollHeight)")
        sleep(1)


    shadow_host=driver.find_element(By.XPATH,'//footer//div[contains(@id,"yandex_rtb")]/div')
    shadow_root_a_els = driver.execute_script('return arguments[0].shadowRoot.querySelectorAll("a");', shadow_host)
    for shadow_root_a_el in shadow_root_a_els:
        print(f"{shadow_root_a_el.text} {shadow_root_a_el.get_attribute('href')}")

except Exception as e:
    print(e)
    raise
finally:
    driver.quit()


Браузер запускается, подождите немного
https://yandex.ru/an/count/WU0ejI_zOoVX2LcN0PKE06EPOIO...
karo.spb.ru https://yandex.ru/an/count/WU0ejI_zOoVX2LcN0PKE06EPOIOQb...
Монтгомери. Энн из Авонлеи. Английский без сокращений https://yandex.ru/an/count/WU0ejI_zOoVX2LcN0PKE06EPOIOQb....
Доставка по всей России • Напрямую от издательства • Есть электронная вер...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы