这听起来很通用,但我不知道如何提出这个问题。
我正在使用 Selenium Webdriver (在python上)自动下载一些图像。我可以在搜索后访问这些图像的链接列表。完整的链接列表具有已知长度,但在连续滚动后会加载。
例如,在启动搜索后,我可能知道有210个结果,但只有20个被加载。向下滚动多次将加载其他的。工作流程示例:
向下滚动非常痛苦,因为图片下载位于不同的页面上,关闭新页面将重新加载原始搜索结果,而不会进行所有向下滚动。意思是我需要再次滚动。
为了加快这个过程,我尝试使用 PhantomJS 并提高页面的垂直分辨率。但是,这不会加载所有元素并且进程失败,可能是因为垂直分辨率足以加载所有20个元素,并且无法触发滚动函数来加载其他元素。
所以我猜测有一些功能在向下滚动时会被触发。但我无法在页面源中找到它。
我所知道的是它加载<div id="loader">
我每次获取新项目时都会看到(并且每次因连接问题导致页面挂起)。
我的问题n.1 是指在不滚动的情况下直接调用该函数,(d.execute_script("some_magic_function")
与d.execute_script("window.scrollTo(0, 1000);")
相比可以节省一些时间。也许不是,所以我应该像我现在一样使用实际的滚动行为。
但如果可能有优势,那么我的问题n.2 就是我能找到触发加载新元素(以及<div id="loader">
)的函数的方法。我曾尝试寻找onscroll
或scroll
,但却无处可寻。