首页 > 解决方案 > 如果当前迭代在 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循环,直到单击下一个分页号时下一个记录集已加载到站点中。直到应该暂停该迭代。帮我解决这个问题。提前致谢 :)

标签: pythonpython-3.xselenium-webdriverweb-scrapingscrapy

解决方案


推荐阅读