为什么使用Selenium向下滚动并单击按钮有时无法加载所有页面

时间:2018-11-21 07:14:03

标签: python selenium web-scraping beautifulsoup

我正在尝试使用Selenium加载页面并使用Beautiful Soup对其进行解析。我尝试了不同的方法来模拟点击“加载更多”按钮,只有此处的代码有效。 [How to scroll down in Python Selenium step by step

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 :(得分:0)

我建议这样做:

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 + '"]')

啊,痛苦减轻了。