我目前使用硒webdriver解析通过facebook用户的朋友页面,并从AJAX脚本提取所有id。但我需要向下滚动来找到所有的朋友。如何向下滚动硒。我正在使用python。
当前回答
这些答案都不适合我,至少不适合滚动facebook搜索结果页面,但经过大量测试后,我发现这个解决方案:
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
其他回答
滚动加载页面。例如:medium, quora等
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight-1000);")
# Wait to load the page.
driver.implicitly_wait(30) # seconds
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
# sleep for 30s
driver.implicitly_wait(30) # seconds
driver.quit()
如果你想在一个特定的视图/帧(WebElement)内滚动,你只需要用你想要滚动的特定元素替换“body”。在下面的例子中,我通过“getElementById”获得该元素:
self.driver.execute_script('window.scrollTo(0, document.getElementById("page-manager").scrollHeight);')
这就是YouTube上的例子……
医生说 类ActionChains完成工作:
from selenium import webdriver
from selenium.webdriver import ActionChains
driver = webdriver.Firefox()
action_chains = ActionChains(driver)
action_chains.scroll(x: int, y: int, delta_x: int, delta_y: int, duration: int = 0, origin: str = 'viewport').perform()
使用“send keys”方法滚动页面的循环:
pre_scroll_height = driver.execute_script('return document.body.scrollHeight;')
while True:
driver.find_element_by_tag_name('body').send_keys(Keys.END)
time.sleep(5)
post_scroll_height = driver.execute_script('return document.body.scrollHeight;')
print(pre_scroll_height, post_scroll_height)
if pre_scroll_height == post_scroll_height:
break
pre_scroll_height=post_scroll_height
出于我的目的,我想要更多地向下滚动,记住窗口的位置。我的解决方案类似,使用window.scrollY
driver.execute_script("window.scrollTo(0, window.scrollY + 200)")
哪个会到当前的y轴滚动位置+ 200
推荐文章
- 为什么Python代码使用len()函数而不是length方法?
- "ERROR:root:code for hash md5 was not found"当使用任何hg mercurial命令时
- 在Seaborn Barplot标签轴
- 忽略带有str.contains的nan
- C:\Program Files (x86)\Python33\python.exe" "C:\Program Files (x86)\Python33\pip.exe"
- 我如何在python中使用selenium webdriver滚动网页?
- 指定并保存具有精确像素大小的图形
- 如何更新SQLAlchemy行条目?
- name 'reduce'在Python中没有定义
- 如何计算一个NumPy bool数组中的真实元素的数量
- 在python中,在函数结束(例如检查失败)之前退出函数(没有返回值)的最佳方法是什么?
- 在Python中检查一个单词是否在字符串中
- Python glob多个文件类型
- 如何可靠地打开与当前运行脚本在同一目录下的文件
- Python csv字符串到数组