Twitter 的 Selenium WebDriverWait 异常
Selenium WebDriverWait exception with Twitter
我正在尝试查找某个帐户发布的任何新推文。我有以下代码:
while True:
browser.get("https://twitter.com/" + twitter_username)
try:
WebDriverWait(browser, 10).until(lambda x: x.find_element(by=By.XPATH, value='//article[@data-testid="tweet"]'))
except Exception as e:
print(e)
return
# More code to get the newest Tweet
前 10-20 分钟一切正常(网页加载正确并且我收到了最新的推文),但随后它开始抛出以下异常:
Message:
Stacktrace:
#0 0x5583bfb217d3 <unknown>
#1 0x5583bf87d688 <unknown>
#2 0x5583bf8b3c21 <unknown>
#3 0x5583bf8b3de1 <unknown>
#4 0x5583bf8e6d74 <unknown>
#5 0x5583bf8d16dd <unknown>
#6 0x5583bf8e4a0c <unknown>
#7 0x5583bf8d15a3 <unknown>
#8 0x5583bf8a6ddc <unknown>
#9 0x5583bf8a7de5 <unknown>
#10 0x5583bfb5249d <unknown>
#11 0x5583bfb6b60c <unknown>
#12 0x5583bfb54205 <unknown>
#13 0x5583bfb6bee5 <unknown>
#14 0x5583bfb48070 <unknown>
#15 0x5583bfb87488 <unknown>
#16 0x5583bfb8760c <unknown>
#17 0x5583bfba0c6d <unknown>
#18 0x7fbd0c6b76db <unknown>
如有任何帮助,我们将不胜感激。谢谢
在每个循环的末尾添加:
browser.refresh()
看起来你的驱动程序的内存消耗随着每次循环迭代而增加。
你说 10-20 分钟后你的脚本停止正常工作?
假设您的代码在大约 2000 次迭代后仍能正常工作?
在这种情况下,为您的外观添加一个计数器,以便在 500 次迭代后您将处理当前使用的驱动程序对象实例并创建一个新的,如下所示:
counter = 0
while True:
counter = counter + 1
if(counter>500):
browser = webdriver.Chrome(executable_path='chromedriver.exe')
counter = 0
browser.get("https://twitter.com/" + twitter_username)
try:
WebDriverWait(browser, 10).until(lambda x: x.find_element(by=By.XPATH, value='//article[@data-testid="tweet"]'))
except Exception as e:
print(e)
return
我正在尝试查找某个帐户发布的任何新推文。我有以下代码:
while True:
browser.get("https://twitter.com/" + twitter_username)
try:
WebDriverWait(browser, 10).until(lambda x: x.find_element(by=By.XPATH, value='//article[@data-testid="tweet"]'))
except Exception as e:
print(e)
return
# More code to get the newest Tweet
前 10-20 分钟一切正常(网页加载正确并且我收到了最新的推文),但随后它开始抛出以下异常:
Message:
Stacktrace:
#0 0x5583bfb217d3 <unknown>
#1 0x5583bf87d688 <unknown>
#2 0x5583bf8b3c21 <unknown>
#3 0x5583bf8b3de1 <unknown>
#4 0x5583bf8e6d74 <unknown>
#5 0x5583bf8d16dd <unknown>
#6 0x5583bf8e4a0c <unknown>
#7 0x5583bf8d15a3 <unknown>
#8 0x5583bf8a6ddc <unknown>
#9 0x5583bf8a7de5 <unknown>
#10 0x5583bfb5249d <unknown>
#11 0x5583bfb6b60c <unknown>
#12 0x5583bfb54205 <unknown>
#13 0x5583bfb6bee5 <unknown>
#14 0x5583bfb48070 <unknown>
#15 0x5583bfb87488 <unknown>
#16 0x5583bfb8760c <unknown>
#17 0x5583bfba0c6d <unknown>
#18 0x7fbd0c6b76db <unknown>
如有任何帮助,我们将不胜感激。谢谢
在每个循环的末尾添加:
browser.refresh()
看起来你的驱动程序的内存消耗随着每次循环迭代而增加。
你说 10-20 分钟后你的脚本停止正常工作?
假设您的代码在大约 2000 次迭代后仍能正常工作?
在这种情况下,为您的外观添加一个计数器,以便在 500 次迭代后您将处理当前使用的驱动程序对象实例并创建一个新的,如下所示:
counter = 0
while True:
counter = counter + 1
if(counter>500):
browser = webdriver.Chrome(executable_path='chromedriver.exe')
counter = 0
browser.get("https://twitter.com/" + twitter_username)
try:
WebDriverWait(browser, 10).until(lambda x: x.find_element(by=By.XPATH, value='//article[@data-testid="tweet"]'))
except Exception as e:
print(e)
return