#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()
, чтобы он открывался во весь экран