Хотите нажать кнопку загрузить csv с помощью Selenium Python, но кнопка меняет имя класса при наведении курсора?

#python #html #selenium #csv #google-colaboratory

Вопрос:

Я пытаюсь сохранить файл csv, нажав кнопку загрузить csv на веб-сайте. Тем не менее, я заметил, что действие .click() ничего не делает, и я обнаружил, что имя класса кнопки меняется с «кнопка экспорта-это-csv» на «кнопка экспорта-это-csv». Однако, когда я пытаюсь find_element_by_class_name() для нового имени класса, оно возвращает ошибку, в которой говорится, что его там нет. Вот мой код:

 driver = webdriver.Chrome('chromedriver',options=options)

driver.get('https://www.rotowire.com/basketball/injury-report.php')

time.sleep(1)

download_csv=driver.find_element_by_class_name('export-button.is-csv')

download_csv.find_element_by_class_name('export-button.is-csv.hovering').click()
 

Вот сообщение об ошибке, которое я получаю:

 Message: no such element: Unable to locate element: {"method":"css selector","selector":".export-button is-csv.hovering"}
  (Session info: headless chrome=94.0.4606.71)
 

Мне было интересно, каково конкретное решение этой проблемы(я использую Google Colabs и новичок в Selenium).

Ответ №1:

Просто возьмите таблицу прямо из источника, затем используйте pandas для преобразования в фрейм данных и записи на диск:

 import requests
import pandas as pd

url = 'https://www.rotowire.com/basketball/tables/injury-report.php?team=ALLamp;pos=ALL'
jsonData = requests.get(url).json()

df = pd.DataFrame(jsonData)
df.to_csv('file.csv', index=False)      
 

Комментарии:

1. Могу я спросить, как вы получили URL-адрес? Было ли это через элемент проверки?

2. ДА. Проверка -> Сеть ->> XHR

3. Как именно вы нашли эту ссылку в chitown88? Я проверил HTML и не увидел ничего подобного»? команда=ВСЕamp;pos=ВСЕ». Я вижу URL-адрес до». php», но я ничего не вижу в HTML после «.php». Можете ли вы описать эти шаги? Спасибо.

4. Откройте панель инструментов разработчика (shft ctrl I). Выглядит я. Вкладка Сеть -> XHR. Найдите запрос в списке. Нажмите на него, затем на панели » Он » посмотрите предварительный просмотр. Там вы увидите данные в формате json. Перейдите в раздел Заголовки, чтобы найти URL-адрес для этого запроса.

Ответ №2:

Вы можете напрямую использовать

 button.is-csv
 

css selector чтобы нажать на него.

 driver.maximize_window()
driver.implicitly_wait(30)
driver.get('https://www.rotowire.com/basketball/injury-report.php')

time.sleep(1)

download_csv = driver.find_element_by_css_selector('button.is-csv')
download_csv.click()
 

Комментарии:

1. добавлено driver.maximize_window() , чтобы он открывался во весь экран