在正则表达式上设置等待 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)
这样我就有了等待页面元素的工作代码:
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)