У меня есть работающий веб-скребок, написанный на Python, Selenium и Chromedriver (все последние версии) и различных других программных пакетах. На целевой веб-странице есть поле для номера телефона, но чтобы его открыть, нужно нажать кнопку:
+1-XXX-XXX-XXXX
Reveal
Обратите внимание, что все имена классов бессмысленны и имеют тенденцию меняться, поэтому я стараюсь использовать имена, которые останутся постоянными. Единственное, что я могу придумать, это использовать кнопку «ТЕГ» и идентификатор «p» с атрибутом «aria-label="Показать номер телефона". Я не могу определить CSS_SELECTOR, который я могу использовать с этими значениями, чтобы плавно ждать после того, как я удостоверюсь, что это поле находится на веб-странице. Вот код, который я пробовал. Я знаю, что этого недостаточно для тестирования, но надеюсь на некоторые идеи о том, что еще можно попробовать:
results = soup.find_all('p',attrs={'aria-label':'Reveal phone number'})
if re.search('Reveal phone number',str(results)):
elems = ''
try:
elems = webdwait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,"[aria-label='Reveal phone number']")))
except Exception as err:
logging.info(f"ERROR F{flag}-70: Webpage element (PhoneRevealButton) search failed ...")
logging.info(f"ERROR F{flag}-70: type={type(err)}: {err}")
print(f" WARNING F{flag}-70: Webpage search failed ({type(err)}): trying again ...",flush=True)
failed = True
if not failed:
for elem in elems:
if re.search('Reveal phone number',str(elem.get_attribute('outerHTML'))):
driver.execute_script("arguments[0].scrollIntoView(true);",elem)
try:
driver.execute_script("arguments[0].click();",elem)
except Exception as err:
logging.info(f"ERROR F{flag}-71: Webpage element (PhoneRevealButton) search failed ...")
logging.info(f"ERROR F{flag}-71: type={type(err)}: {err}")
print(f" WARNING F{flag}-71: Webpage click failed ({type(err)}): trying again ...",flush=True)
failed = True
if not failed:
# Wait until these elements are updated
lcnt = 0
while True:
try:
elems = webdwait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,"[aria-label='Reveal phone number']")))
except Exception as err:
# Element is gone?
logging.info(f"INFO F{flag}-72: type={type(err)}: {err}")
break
cnt = 0
for elem in elems:
if re.search('Reveal phone number',str(elem.get_attribute('outerHTML'))):
# Element still exists
cnt += 1
if cnt == 0:
break
lcnt += 1
if lcnt * timeout_wait2 >= timeout_dri:
print(f" ERROR: Waited too long for webpage to update - phone number not retrieved")
break
time.sleep(timeout_wait2)
Подробнее здесь: https://stackoverflow.com/questions/798 ... nd-wait-un
Как мне запрограммировать селектор CSS, чтобы найти определенную кнопку, нажать на нее и дождаться, пока веб-страница вы ⇐ Python
Программы на Python
1764513824
Anonymous
У меня есть работающий веб-скребок, написанный на Python, Selenium и Chromedriver (все последние версии) и различных других программных пакетах. На целевой веб-странице есть поле для номера телефона, но чтобы его открыть, нужно нажать кнопку:
+1-XXX-XXX-XXXX
Reveal
Обратите внимание, что все имена классов бессмысленны и имеют тенденцию меняться, поэтому я стараюсь использовать имена, которые останутся постоянными. Единственное, что я могу придумать, это использовать кнопку «ТЕГ» и идентификатор «p» с атрибутом «aria-label="Показать номер телефона". Я не могу определить CSS_SELECTOR, который я могу использовать с этими значениями, чтобы плавно ждать после того, как я удостоверюсь, что это поле находится на веб-странице. Вот код, который я пробовал. Я знаю, что этого недостаточно для тестирования, но надеюсь на некоторые идеи о том, что еще можно попробовать:
results = soup.find_all('p',attrs={'aria-label':'Reveal phone number'})
if re.search('Reveal phone number',str(results)):
elems = ''
try:
elems = webdwait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,"[aria-label='Reveal phone number']")))
except Exception as err:
logging.info(f"ERROR F{flag}-70: Webpage element (PhoneRevealButton) search failed ...")
logging.info(f"ERROR F{flag}-70: type={type(err)}: {err}")
print(f" WARNING F{flag}-70: Webpage search failed ({type(err)}): trying again ...",flush=True)
failed = True
if not failed:
for elem in elems:
if re.search('Reveal phone number',str(elem.get_attribute('outerHTML'))):
driver.execute_script("arguments[0].scrollIntoView(true);",elem)
try:
driver.execute_script("arguments[0].click();",elem)
except Exception as err:
logging.info(f"ERROR F{flag}-71: Webpage element (PhoneRevealButton) search failed ...")
logging.info(f"ERROR F{flag}-71: type={type(err)}: {err}")
print(f" WARNING F{flag}-71: Webpage click failed ({type(err)}): trying again ...",flush=True)
failed = True
if not failed:
# Wait until these elements are updated
lcnt = 0
while True:
try:
elems = webdwait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,"[aria-label='Reveal phone number']")))
except Exception as err:
# Element is gone?
logging.info(f"INFO F{flag}-72: type={type(err)}: {err}")
break
cnt = 0
for elem in elems:
if re.search('Reveal phone number',str(elem.get_attribute('outerHTML'))):
# Element still exists
cnt += 1
if cnt == 0:
break
lcnt += 1
if lcnt * timeout_wait2 >= timeout_dri:
print(f" ERROR: Waited too long for webpage to update - phone number not retrieved")
break
time.sleep(timeout_wait2)
Подробнее здесь: [url]https://stackoverflow.com/questions/79833608/how-do-i-code-a-css-selector-to-find-a-specific-button-click-on-it-and-wait-un[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия