我有一些代码,我正在尝试刮擦网站。过了一会儿,我认为我被网站放慢了脚步。我不能chekc,但是这是在我的代码中发生的
z=timeit.default_timer()
try:
WebDriverWait(browser,5).until(
EC.presence_of_element_located((By.XPATH,'''
.//div[@collectionitem="title"]/descendant::div[@class="titleWidgetLayout"]/
descendant::h1[@class="title"]''')))
except:
print('Web Scraper not loaded')
return 'Error Load'
n=timeit.default_timer()
print('Time actually waited',n-z)
我发现,在此时间大约是1-2秒时,它最终会变成25秒的等待。这不仅比可接受的速度降低了代码的速度更大,而且等待时间如何比我设置为超时错误触发的5秒钟更长的时间?
我想这可能是页面上的障碍,但是无论如何,我该如何修复?
这很可能发生,因为webdriver
设置为等待,直到页面为完全(直到页面的负载符号在寻找任何元素之前,已经完成了加载。
因此,如果您的页面需要23秒才能加载,然后您的元素在页面加载后3秒钟后,您将不会从WebDriverWait
条件中丢下超时。
您可以尝试设置页面加载超时:
browser.set_page_load_timeout(5)
这样,如果页面花费的时间太长,您可以跳过它?除此之外,您还必须等到页面加载完成。