我目前使用硒webdriver解析通过facebook用户的朋友页面,并从AJAX脚本提取所有id。但我需要向下滚动来找到所有的朋友。如何向下滚动硒。我正在使用python。
当前回答
医生说 类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()
其他回答
这段代码滚动到底部,但不需要每次都等待。它会不断滚动,然后在底部停止(或超时)
from selenium import webdriver
import time
driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get('https://example.com')
pre_scroll_height = driver.execute_script('return document.body.scrollHeight;')
run_time, max_run_time = 0, 1
while True:
iteration_start = time.time()
# Scroll webpage, the 100 allows for a more 'aggressive' scroll
driver.execute_script('window.scrollTo(0, 100*document.body.scrollHeight);')
post_scroll_height = driver.execute_script('return document.body.scrollHeight;')
scrolled = post_scroll_height != pre_scroll_height
timed_out = run_time >= max_run_time
if scrolled:
run_time = 0
pre_scroll_height = post_scroll_height
elif not scrolled and not timed_out:
run_time += time.time() - iteration_start
elif not scrolled and timed_out:
break
# closing the driver is optional
driver.close()
这比每次等待0.5-3秒的响应要快得多,因为每次响应可能需要0.1秒
我发现解决这个问题的最简单的方法是选择一个标签,然后发送:
label.sendKeys(Keys.PAGE_DOWN);
希望它有用!
下面是一个示例selenium代码片段,您可以将其用于这种类型的目的。它会转到youtube搜索结果的url“Enumerate python tutorial”,然后向下滚动,直到找到标题为“Enumerate python tutorial(2020)”的视频。
driver.get('https://www.youtube.com/results?search_query=enumerate+python')
target = driver.find_element_by_link_text('Enumerate python tutorial(2020).')
target.location_once_scrolled_into_view
element=find_element_by_xpath("xpath of the li you are trying to access")
element.location_once_scrolled_into_view
当我试图进入一个不可见的“li”时,这很有帮助。
这是你如何向下滚动网页:
driver.execute_script("window.scrollTo(0, 1000);")
推荐文章
- 为什么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字符串到数组