python - 如果当前迭代在 FOR 或 WHILE 循环中完成,则需要开始下一次迭代
问题描述
目前我正在使用scrapy和seleniumm在python中开发脚本。基本上是一个抓取网站的蜘蛛。我在分页时体验到该网站非常慢。下面我附上了分页的图像
当我单击分页数时,它会消耗更多时间,并且当单击分页数进行分页时会出现加载屏幕(下面是加载屏幕,它加载到当前记录表上方)。这个分页是基于 Ajax 的(如果我没有错,因为它似乎没有页面刷新)。
我开发的代码是,点击分页是基于while
循环的,它只是迭代,甚至下一组数据加载或未加载。while
只是通过不检查正在加载的记录来循环。我什至已经设置了time.sleep(5)
. 不幸的是,循环只是迭代。分页非常慢。它需要更多时间来加载,但我们不能说它需要加载多少时间。取决于互联网的流量和带宽以及网站流量。
我开发的示例代码
wait = WebDriverWait(self.driver, 5, poll_frequency=1)
while True:
#data saving process works here
try:
#Pagination xpath
next_page = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@class="dxpCtrl"]//td[@class="dxpPageNumber dxpCurrentPageNumber"]/following-sibling::td[@class="dxpPageNumber"]')))
if 'aspxGVPagerOnClick' in next_page.get_attribute('onclick'):
#Click pagination 1, 2, 3, 4, ....
driver.execute_script("arguments[0].click();", next_page)
time.sleep(5)
else:
break
except NoSuchElementException:
break
请帮我解决这个问题。我需要迭代while循环,直到单击下一个分页号时下一个记录集已加载到站点中。直到应该暂停该迭代。帮我解决这个问题。提前致谢 :)
解决方案
推荐阅读
- javascript - Ejs页面未在简化版代码上呈现
- java - 并发执行事务时出现 HibernateException
- jquery - 如何在没有 Async:false Jquery 的 Each 循环中调用 Ajax
- shell - 为 spark-submit 创建通用 shell 脚本
- javascript - 如何在本地测试通过 Javascript 发送表单数据?
- python-3.x - IDLE 3.8.4 和 3.9.0b4 不会保存非 ascii 字符的文件
- python-3.x - 在 Discord 语音通道上播放音频文件 wile 文件正在生成
- javascript - 如何根据javascript中的某些标志获取特定对象属性数组的总和?
- java - 在 RxJava 中处理 PublishSubject 对象 内存泄漏
- amazon-web-services - 将 GCP 对象存储数据迁移到 AWS S3 存储桶