我编写了一个屏幕抓取程序,该程序监视时钟(在应用程序服务器上)并在7:00:00破折号处在线进行预订。工作正常。但是,我花了一些时间尝试改善其性能。我正在使用硒和chrome驱动程序。
这是我所学到的。我尝试了各种方法来查找(通过link_text,by_xpath等)并单击有问题的元素(如下所示)。当我没有点击就找到元素时,查找过程大约需要0.02秒。当我单击一下找到它(我需要选择元素并移至下一页)时,它花费了一秒钟。无论我使用哪种find_element_by变体,我都会得到这些相同的结果,并且在无头或普通模式下,我得到相同的时间。
这是我的理论-在已经加载到我的机器中的html中查找元素相对简单。但是,当我单击该元素时,处理将转到服务器,服务器将执行一些操作,并且显示新的iframe,所有这些都需要时间。因此,我得出的结论是,也许我不能花大量的时间(实际上,没有单击选项的同一条语句花费了2%的时间),但我希望也许有人对此有所想法。我以为也许我可以在本地跳到第二个ifame,但是看不到做到这一点的方法。我还考虑了硒以外的其他方法,但是由于我认为问题出在服务器端,因此不确定是否值得。
提前感谢任何想法。
程序很大,但这是相关部分:
try:
br.find_element_by_link_text(str(day_to_book)).click()
#sleep(refresh_factor)
except NoSuchElementException:
self.queue.put("- (" + thread + ") Attempted date selection too early? " + str(datetime.datetime.now()\
+ datetime.timedelta(seconds = second_difference))[-11:-4])
这是元素'class =“#”> 31:'的html
“ 31 31“