Ошибка ссылки на устаревший элемент при переборе CSS селектора для извлечения ссылок с Python - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь получить все ссылки на сообщения в учетной записи Instagram. Структура немного вложенная: сначала я нахожу класс по X_Path, где расположены все эти ссылки, а затем перебираю web_elements (posts) для извлечения ссылок. Однако при таком подходе выбрасывается ссылка на устаревший элемент.

У меня такой вопрос: как мне спроектировать oop с реализацией WebDriverWait с By.CSS_Selector для извлечения ссылок и сохранения их в одном списке?

Я прочитал и попытался реализовать WebDriverWait, но я застрял, делая это правильно, так как все попытки, похоже, не работают.

Я искал вопросы и нашел две ссылки, которые были очень полезны, однако ни одна из них не имела дела с By.CSS_SELECTOR для извлечения a href.

Это ссылки: StaleElementException при итерации с Python

Мой текущий код, который идет бесконечно l oop:

def getting_comment(instagram_page, xpath_to_links, xpath_to_comments  ):
global allComments
links = []
scheight = .1
posts = []
browser= webdriver.Chrome('/Users/marialavrovskaa/desktop/chromedriver')
browser.get(f"{instagram_page}")
while scheight < 9.9:
    browser.execute_script("window.scrollTo(0, document.body.scrollHeight/%s);" % scheight)
    scheight += .01
    posts = browser.find_elements_by_xpath(f"//div[@class='{xpath_to_links}']")

    for elem in posts: 
        while True: 
            try: 
                WebDriverWait(elem, 20).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".a")))
                links.append(elem.find_element_by_css_selector('a').get_attribute('href'))
            except TimeoutException: 
                break

instagram_page = https://www.instagram.com/titovby/?hl=ru

xpath_to_links = v1Nh3 kIKUG _bz0w

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...