Очистка загружает больше кнопок, выдавая ошибку - невозможно найти элемент

Я пытаюсь воспроизвести код выбранного ответа из этого сообщения Выполните парсинг страницы с помощью кнопки «Загрузить больше» с помощью rvest на этом веб-сайте https://www.coindesk.com/ . Однако следующая строка выдает ошибку:

#original    
#load_btn <- ffd$findElement(using = "css selector", ".load-more .btn")
#modified
load_btn <- ffd$findElement(using = "css selector", ".load-more-stories .btn")

Сообщение Selenium: невозможно найти элемент: загрузить больше историй. Для получения документации по этой ошибке посетите: https://www.seleniumhq.org/exceptions/no_such_element.html Информация о сборке: версия: «4.0.0-alpha-2», редакция: «f148142cf8», время: «2019-07-01T21:30». :10' Информация о системе: хост: 'LAPTOP-sdsds9L', ip: 'sdssd', os.name: 'Windows 10', os.arch: 'x86', os.version: '10.0', java.version: ' 1.8.0_211' Информация о драйвере: версия драйвера: неизвестна

Ошибка: Сводка: NoSuchElement Сведения: Не удалось найти элемент на странице с заданными параметрами поиска. класс: org.openqa.selenium.NoSuchElementException Дополнительные сведения: запустить метод errorDetails

Я принял имя на основе строк 449-452:

 </div>
            <div id="load-more-stories">
    <button>Load More Stories</button>
</div>        </div>

Есть идеи, как правильно адаптировать эту стратегию?


person user3091668    schedule 08.08.2019    source источник


Ответы (3)


Сначала вам нужно отключить панель cookie, нажав кнопку «Принять», а затем перейти к использованию load-more-stories в качестве идентификатора, а не класса. Я не могу проверить в R, но что-то вроде:

cookie_button  <- ffd$findElement("css selector", '#CybotCookiebotDialogBodyLevelButtonAccept')
cookie_button$clickElement()
load_more_button  <- ffd$findElement("css selector", '#load-more-stories')
load_more_button$clickElement()

Ссылки:

  1. https://cran.r-project.org/web/packages/RSelenium/RSelenium.pdf
person QHarr    schedule 09.08.2019

ДИАГНОЗ: в основном вы сталкиваетесь с этой проблемой, потому что страница не перенаправляется на другую страницу, а вместо этого добавляет ссылки на статьи на странице. Я написал это, используя язык парсинга веб-страниц

GOTO www.coindesk.com >> CRAWL ['#load-more-stories', 3] .stream-article >> EXTRACT {'title':'.meta h1', 'article':'.article-content'}

ОБЪЯСНЕНИЕ. Это должно просканировать все статьи до 3й страницы, нажав на ссылку #load-more-stories или "Загрузить больше историй" внизу. Затем он посещает каждую ссылку с помощью селектора .stream-article и на следующей странице извлекает title и article с помощью соответствующих селекторов.

person qimisle    schedule 08.08.2019
comment
Есть идеи, как адаптировать его с помощью пакета RSelenium? - person user3091668; 09.08.2019
comment
@user3091668 user3091668 Это независимый от библиотеки и просто облачный сервис, что означает, что вы пишете WSL, и он сканирует и очищает все данные. Его также легко читать, что означает, что вы можете поддерживать его в процессе работы, вместо того, чтобы иметь дело с реальным кодом. - person user299709; 09.08.2019

HTML id= — это не то же самое, что класс CSS.

Следовательно, ваш селектор неверен и не соответствует.

person Has QUIT--Anony-Mousse    schedule 08.08.2019