Я написал скрипт на python в сочетании с селеном, чтобы циклически нажимать на несколько ссылок с веб-страницы. Прежде всего, скребок должен нажать на кнопку поиска (без каких-либо изменений в полях поиска) на целевой странице, чтобы заполнить результаты.
ШАГ ПЕРВЫЙ:
Когда результаты появятся, скребок должен щелкнуть по каждой из ссылок, которые я пытался показать на первом изображении.
После нажатия на любую ссылку появляется окно с дополнительной информацией.
ШАГ ВТОРОЙ:
Во всплывающем окне есть несколько вкладок, скрывающих немного больше информации, которая открывается при нажатии (новые вкладки видны на изображении 3).
НАКОНЕЦ:
Однако скребок должен продолжать делать то же самое, пока все ссылки не будут исчерпаны.
То, что я попробовал, может почти все сделать. Он выполняет все вышеуказанные шаги один раз (для первой ссылки), но для второй ссылки скребок застревает в последней строке моего скрипта, выдавая ошибку timeout exception
. Буду очень признателен за любую помощь, чтобы сделать это.
Адрес сайта: ссылка на сайт
Это то, что я пробовал до сих пор:
from selenium import webdriver ; import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get("https://www.mspa-ea.org/search-mspa-companies.html")
wait.until(EC.element_to_be_clickable((By.ID, "element-button"))).click() #clicking on search button
for post in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".company a"))):
post.click() #clicking on each links shown in image one
time.sleep(2)
try:
for elem in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".memberDetail .informationContainer ul li"))):
elem.click() #clicking on tabs cyclically
time.sleep(2)
except:
pass
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".memberDetail .closeDetail"))).click()
#close the pop up box.
#timeout exception throws here when it cycles for the second time
Однако, выполнив все это для одной ссылки, когда она идет к другой ссылке, чтобы повторить действие, она открывает всплывающее окно и вместо того, чтобы щелкать по вкладкам, она непосредственно попадает в последнюю строку и выдает timeout exception
. Более того, я не смог избавиться от жестко заданных задержек, определенных в моем скребке.
Изображения следующие (один, два и три по порядку):
https://i.stack.imgur.com/RLvVY.jpg
https://i.stack.imgur.com/OK2R4.jpg
https://i.stack.imgur.com/o7pG5.jpg