使用Python Selenium和网络驱动程序(geckodriver或Chrome驱动程序)重复调用同一URL会在首次运行程序时返回正确的信息。但是,即使连续等待60秒,每个连续的运行都将继续,甚至重新启动后仍会从第一个获取URL中返回信息。
下面是启动程序的代码,该程序每分钟都会在跑道上刮擦赔率。代码中用于测试的时间较少。
import time
import os
from selenium import webdriver
#url = "https://www.drf.com/live_odds/winodds/track/DED/USA/3/D"
#url = "https://www.drf.com/live_odds/winodds/track/TAM/USA/10/D"
#url = "https://www.drf.com/live_odds/winodds/track/AUS-MNG/AUS/5/D"
#url = "https://www.drf.com/live_odds/winodds/track/AUS-AUC/AUS/2/D"
url = "https://www.drf.com/live_odds/winodds/track/SA/USA/5/D"
driver = webdriver.Chrome()
driver.get(url)
driver.refresh()
time.sleep(50)
#url = "https://www.drf.com/live_odds/winodds/track/AQU/USA/7/D"
#url = "https://www.drf.com/live_odds/winodds/track/LA/USA/4/D"
driver.close()
driver.quit()
#os.system(killall "Chrome")
起初,我认为问题出在我的请求中,所以我转移到了Selenium和geckodriver,后来又转移到了Chrome驱动程序。然后它起作用了。第一次获得URL时,返回了正确的信息。第二次我使用相同的URL并进行了获取-最终机会将改变-我仍然从第一个获取URL获得结果。即使再次运行该程序,我仍然可以获得与第一个获取URL相同的结果。但是,如果我在没有Selenium的情况下运行Chrome并转到相同的网址,那么我将获得正确的更新赔率。同样在不使用Selenium的情况下运行Chrome,当我运行Selenium和Chrome驱动程序时,赔率在页面上水平显示,而赔率则显示在列中。我知道通常存在兼容性问题,但是我在过去两到三周内下载了Selenium和驱动程序。
如果您在SA-Santa Anita Racetrack未运行时运行该程序,它将不会很准确,并且在此代码中它将是第5个种族。您可以轻松更改与当前种族匹配的种族编号。您可以通过访问www.drf.com,然后转到条目并单击实时赔率来更改曲目。在这里,您将看到一列曲目,您可以单击一个,然后在其中您会看到适当的URL。将其粘贴到程序中并将其分配为新的URL。再次,您将看到返回的屏幕是正确的,但是您可以一次又一次地运行该程序,并且只会在第一个屏幕上获得结果。如果您不使用Selenium而运行Chrome,您将不会获得新的机会。是否有一些引用卡在缓冲区中?还是网站试图禁止连续不断地抓取赔率。我也尝试过重新启动,但是再次运行Selenium和Chrome驱动程序时,仍然从URL获得了旧结果。
如果我只运行Chrome,我也会得到新的更新。难道这意味着必须对原始请求进行某些引用,因此必须将其保存在磁盘上,因为重新启动后会擦除内存中的所有引用?这可以涉及套接字引用吗?