Как получить статью:
В зависимости от того, насколько открыт пост, содержимое будет находиться под div с @role="dialog"
или @id="react-root"
. Если вы открываете сообщение напрямую, диалоговое окно отсутствует, но если вы ищете '//div[@role="dialog" or @id="react-root"]//article
, последним будет сообщение, которое вы ищете.
Итак:
article = driver.find_elements_by_xpath('//div[@role="dialog" or @id="react-root"]//article')[-1]
Как получить следующее изображение в статье:
next_image_arrow = article.find_element_by_xpath('.//*[contains(@class, "coreSpriteRightChevron")]')
Как выбрать следующую статью (доступно только при открытии статьи в модальном режиме) ):
next_article_button = driver.find_element_by_xpath('//a[contains(@class, "coreSpriteRightPaginationArrow")]')
Как получить комментарии:
all_comments = article.find_elements_by_xpath('./div/section[2]/following-sibling::div/ul/ul')
Указанный выше Xpath означает:
/div/section[2]
<< в узле статьи получить все узлы, которые имеют <em>прямой div
дочерний узел, имеющий как минимум 2 прямых section
тегированных дочерних узла , и выбрать второй /following-sibling::div/ul/ul
<< принять найденное узлы раздела, и если за узлом раздела следует div, и у него есть прямые дочерние узлы ul, которые имеют прямые дочерние узлы ul, вернуть их </li>
Надеюсь, это ответ на вопрос.