在正则表达式上设置等待 python selenium WebDriverWait()

Setting wait for python selenium WebDriverWait() on regex

这样我就有了等待页面元素的工作代码:

wait = WebDriverWait(driver, 60)
    try:
        imo_giris = wait.until(EC.visibility_of_element_located((By.XPATH, "//*[@id='P_ENTREE_HOME']")))
        imo_giris.send_keys(imo, "\n")
    except TimeoutException:
        print("None")
        driver.close()
        continue

如何将这个 WebDriverWait() 模块集成到我的代码中,以便在我的页面源代码中找到电子邮件正则表达式? 这是我获取网站电子邮件正则表达式的代码:

    results = []
    for query in my_list:
        results.append(search(query, tld="com", num=3, stop=3, pause=2))

    for result in results:
        url = list(result)
        print(*url,sep='\n')
        for site in url:
            driver = webdriver.Chrome()
            driver.get(site)
            doc = driver.page_source
            emails = re.findall(r'[\w\.-]+@[\w\.-]+', doc)
            for email in emails:
                print(email)

我可以从页面上的源代码中找到电子邮件,但有时网站不活跃或需要很多时间,因为源代码太长了。 我想将电子邮件正则表达式搜索减少到 10 秒,我该怎么做?

我解决了问题

我用更好的正则表达式替换了它。 我现在使用的正则表达式运行良好:

r'\b[A-Za-z0-9._%+-]+@(?:[A-Za-z0-9-]+\.)+[A-Za-z]{2,4}\b'

您可以创建一个 custom expected condition,但这似乎有点矫枉过正。相反,您可以使用带有时间测量的简单 for 循环

...
doc = driver.page_source
emails = []
end_time = time.time() + 10
while time.time() < end_time and not emails:
    emails = re.findall(r'[\w\.-]+@[\w\.-]+', doc)
print(emails)