Мой код для попытки щелкнуть следующую страницу: вот так:
Код: Выделить всё
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, '[class="page_charts_section_charts_item object_song"]'))
)
next = True
while next == True:
songs = driver.find_elements(By.CSS_SELECTOR, '[class="page_charts_section_charts_item object_song"]')
for song in songs:
song_artist = song.find_elements(By.CSS_SELECTOR, '[class="ui_name_locale_original"]')
genre = song.find_element(By.CSS_SELECTOR, '[class="genre comma_separated first"]')
rating = song.find_element(By.CSS_SELECTOR, '[class="page_charts_section_charts_item_details_average_num"]')
song_list.append(song_artist[0].text)
artist_list.append(song_artist[1].text)
genre_list.append(genre.text)
rating_list.append(rating.text)
try:
WebDriverWait(driver, 30).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, '[class="ui_pagination_next_label"]'))
)
driver.find_element(By.CSS_SELECTOR, '[class="ui_pagination_next_label"]').click()
except:
next = False
https://rateyourmusic.com/charts/top/so ... e/a:system %2dof%2da%2ddown/
В обычном браузере я могу щелкать без проблем, но кажется, что браузер Selenium работает по-другому.
Есть предложения?
РЕДАКТИРОВАТЬ: Программа нажимает на кнопку, потому что, как вы можете видеть, URL-адрес меняется, но проблема в том, что новая веб-страница не работает. не загружается и выдает ошибку (а этого не происходит, если вы открываете браузер, как человек, и нажимаете кнопку «Далее», поэтому я не знаю, есть ли на сайте какая-то защита от парсинга веб-страниц).
Картина проблемы
Подробнее здесь: https://stackoverflow.com/questions/790 ... -next-page