Почему при использовании Selenium для прокрутки вниз и нажатия кнопки иногда не удается загрузить все страницы - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь загрузить страницу с помощью Selenium и разобрать ее с помощью Beautiful Soup.Я пробовал разные способы имитировать нажатие на кнопку «Загрузить больше», здесь работает только код.[ Как прокрутить шаг вниз в Python Selenium

read_mores = driver.find_elements_by_xpath('//*[@data-teach-id='+ tid + ']')
for read_more in read_mores:
    driver.execute_script("arguments[0].scrollIntoView();", read_more)
    driver.execute_script("$(arguments[0]).click();", read_more)
soup = BeautifulSoup(driver.page_source, 'html.parser')

Однако иногда не удается загрузить всю страницу.Я знаю, что, вероятно, "clickandwait" будет работать, но не знаю, куда вставить код.Я также хотел бы знать, есть ли другой способ справиться с этим.Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 21 ноября 2018

Я рекомендую сделать:

driver.execute_script("document.querySelector('[data-teach-id=\"" + tid + "\"]').click()")

Вместо того, чтобы выбирать в селене и передавать элемент в контекст браузера, делайте все это в контексте браузера.Меньшая вероятность того, что все пойдет не так, как надо.

Просто чтобы придумать ...

Давайте отвлечемся от клика на функцию (думаю, я сделаюэто теперь):

def click(css):
  global driver
  driver.execute_script("document.querySelector('" + css + "').click()")

Теперь мы можем сделать:

click('a[data-teach-id="' + tid + '"]')

Ах, гораздо менее болезненно.

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