Парсинг иерархического веб-сайта в определенной категорииPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Парсинг иерархического веб-сайта в определенной категории

Сообщение Anonymous »

Я пытаюсь очистить следующую страницу: https://esco.ec.europa.eu/en/classification/skill_main. В частности, я хотел бы нажать на все кнопки «плюс» в разделе S-навыки, если больше нет «кнопок с плюсом», а затем сохранить исходный код этой страницы. Теперь, обнаружив при проверке страницы кнопку «плюс» под селектором CSS «.api_hierarchy.has-child-link», я попробовал следующее:

Код: Выделить всё

from selenium.common.exceptions import StaleElementReferenceException

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get("https://esco.ec.europa.eu/en/classification/skill_main")
driver.implicitly_wait(10)

wait = WebDriverWait(driver, 20)

# Define a function to click all expandable "+" buttons
def click_expand_buttons():
while True:
try:
# Find all expandable "+" buttons
expand_buttons = wait.until(EC.presence_of_all_elements_located(
(By.CSS_SELECTOR, ".api_hierarchy.has-child-link"))
)

# If no expandable buttons are found, we are done
if not expand_buttons:
break

# Click each expandable "+" button
for button in expand_buttons:
try:
driver.implicitly_wait(10)
driver.execute_script("arguments[0].click();", button)
# Wait for the dynamic content to load
time.sleep(1)
except StaleElementReferenceException:
# If the element is stale, we find the elements again
break
except StaleElementReferenceException:
continue

# Call the function to start clicking "+" buttons
click_expand_buttons()

html_source = driver.page_source

# Save the HTML to a file
with open("/Users/federiconutarelli/Desktop/escodata/expanded_esco_skills_page.html", "w", encoding="utf-8") as file:
file.write(html_source)

# Close the browser
driver.quit()
Однако приведенный выше код продолжает закрывать и открывать +, скажем, «первого уровня», и это, вероятно, потому, что, учитывая мои ограниченные знания в области парсинга, я просто попросил селена нажать на значок кнопки «плюс», пока не появятся кнопки «плюс», и когда страница обновится до исходной, скрипт будет делать это до бесконечности. Теперь у меня вопрос: как открыть все плюсики (пока не появятся плюсики) только для S-навыков:

Код: Выделить всё

[url=#overlayspin]S - skills[/url]
?

Подробнее здесь: https://stackoverflow.com/questions/781 ... c-category
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»