如何在python中使用selenium webdriver滚动网页?
我目前使用seleniumwebdriverparsing通过Facebook的用户朋友页面,并从AJAX脚本中提取所有id。 但我需要向下滚动以获得所有的朋友。 我如何在Selenium中向下滚动。 我正在使用python。
要么
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
滚动到页面的底部。
如果你想向下滚动到无限页面的底部 (如linkedin.com ),你可以使用下面的代码:
SCROLL_PAUSE_TIME = 0.5 # Get scroll height last_height = driver.execute_script("return document.body.scrollHeight") while True: # Scroll down to bottom driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") # Wait to load page time.sleep(SCROLL_PAUSE_TIME) # Calculate new scroll height and compare with last scroll height new_height = driver.execute_script("return document.body.scrollHeight") if new_height == last_height: break last_height = new_height
参考: https : //stackoverflow.com/a/28928684/1316860
相同的方法如下所示: https : //stackoverflow.com/a/12195714/725944
在Python中,你可以使用
driver.execute_script("window.scrollTo(0, Y)")
(Y是要滚动的垂直位置)
element=find_element_by_xpath("xpath of the li you are trying to access") element.location_once_scrolled_into_view
当我尝试访问一个不可见的“li”时,这有所帮助。
这些答案都没有为我工作,至less不是滚动Facebook的search结果页面,但我发现经过大量的testing这个解决scheme:
while driver.find_element_by_tag_name('div'): driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") Divs=driver.find_element_by_tag_name('div').text if 'End of Results' in Divs: print 'end' break else: continue