【发布时间】:2019-05-07 14:27:58
【问题描述】:
我正在尝试使用 Python 在 javascript 呈现的网页上进行动态网页抓取。
1) 但是,只有当我慢慢向下滚动页面时才会加载元素。
我试过了:
driver.execute_script("window.scrollTo(0, Y)")
(这不起作用,因为它只滚动到页面上的某个点,错过了其他结果)
和
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
(这不起作用,因为向下滚动到页面末尾时元素不会加载 - 它需要用户慢慢滚动整个页面)
2) 如何让 Selenium 等待我的所有元素加载完毕,然后再将它们返回给我?
我了解存在此解决方案:
myElem = WebDriverWait(browser, delay).until(EC.presence_of_element_located((By.ID, 'IdOfMyElement')))
但是,如果结果在用户向下滚动页面时不断出现,这将如何工作?一旦检测到所述元素的第一次出现,这段代码不会让 Selenium 停止吗?
【问题讨论】:
-
你滚动几次怎么样,在滚动之间等待?
-
如果您正在寻找任何特定记录并知道您想要的记录数?如果答案是肯定的,那么我们可以使用
location_once_scrolled_into_view处理这个问题
标签: python selenium web screen-scraping