触发元素加载而不滚动

时间:2016-02-04 10:46:24

标签: javascript jquery python selenium

这听起来很通用,但我不知道如何提出这个问题。

我正在使用 Selenium Webdriver (在python上)自动下载一些图像。我可以在搜索后访问这些图像的链接列表。完整的链接列表具有已知长度,但在连续滚动后会加载。

例如,在启动搜索后,我可能知道有210个结果,但只有20个被加载。向下滚动多次将加载其他的。工作流程示例:

  1. 插入搜索详情,点击搜索按钮
  2. 阅读元素总数
  3. 向下滚动,直到显示的元素数与总数
  4. 相同
  5. 下载资料
  6. 关闭下载页面,返回第3点。
  7. 向下滚动非常痛苦,因为图片下载位于不同的页面上,关闭新页面将重新加载原始搜索结果,而不会进行所有向下滚动。意思是我需要再次滚动。

    为了加快这个过程,我尝试使用 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">)的函数的方法。我曾尝试寻找onscrollscroll,但却无处可寻。

0 个答案:

没有答案