如果当前迭代已在FOR或WHILE循环中完成,则

时间:2020-10-19 06:07:27

标签: python python-3.x selenium-webdriver web-scraping scrapy

目前,我正在使用scrapy和seleniumm在python中开发脚本。基本上是蜘蛛来抓取网站。我在分页时发现网站速度很慢。下面我附上了分页图片

Website Pagination Image

当我单击分页编号时,它会花费更多时间,并且在单击要分页的分页编号时会出现加载屏幕(下面是加载屏幕,它将加载到当前记录表上方)。此分页基于Ajax(如果我没记错,因为它似乎没有页面刷新)。

Pagination Loading Screen image

我开发的代码是,单击分页基于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循环应该迭代,直到在单击下一个分页号时将下一个记录集加载到站点中为止。在此之前,应暂停迭代。帮我解决这个问题。在此先感谢:)

0 个答案:

没有答案
相关问题