Существует страница со столом и следующей кнопкой, которая освежает стол. Теперь я могу извлечь содержимое таблицы, но вам нужно перейти к другим строкам с помощью следующей кнопки. Это ajax-таблица какого-либо типа без href для обновления страницы. Таким образом, я застрял. Страница https://www.whoscored.com/Regions/252/Tournaments/2/Seasons/6335/Stages/13796/PlayerStatistics/England-Premier-League-2016-2017.Селеновые и вращающиеся контейнеры
0
A
ответ
1
Я хотел бы сделать следующее:
- начать бесконечный цикл
- нажмите на следующую кнопку - если это не удается - выйти из цикла (это ваш «перерыв» состояние)
- ждать незаметность таблицы загрузки обертки
- собирать данные игроков
Пример реализации (с использованием selenium
ОНЛ у, но вы, вероятно, следует привлекать BeautifulSoup
для синтаксического анализа данных игроков - должны быть гораздо быстрее):
from pprint import pprint
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import ElementNotVisibleException
root = "https://www.whoscored.com/Regions/252/Tournaments/2/Seasons/6335/Stages/13796/PlayerStatistics/England-Premier-League-2016-2017"
driver = webdriver.PhantomJS()
driver.get(root)
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#statistics-table-summary .player-link")))
# get the first 10 players
players = [player.text for player in driver.find_elements_by_css_selector("#statistics-table-summary .player-link")]
while True:
try:
# click Next
driver.find_element_by_link_text("next").click()
except ElementNotVisibleException:
break # next is not present/visible
wait.until(EC.invisibility_of_element_located((By.ID, "statistics-table-summary-loading")))
# collect the next 10 players
players += [player.text for player in driver.find_elements_by_css_selector("#statistics-table-summary .player-link")]
print(len(players))
pprint(players)
driver.close()
Обратите внимание, что по мере разбора идет, чтобы повысить производительность, используйте SoupStrainer
разобрать только соответствующую таблицу.
Смежные вопросы
- 1. Вращающиеся панели и вкладки
- 2. PHP и вращающиеся прокси
- 3. Вращающиеся и обрезающие изображения
- 4. Селеновые тесты для пользовательских портлетов
- 5. Вращающиеся изображения и скрытые меню
- 6. iPhone UITabBarController и вращающиеся виды
- 7. Вращающиеся матрицы
- 8. Вращающиеся астероиды
- 9. вращающиеся цвета?
- 10. Вращающиеся объекты
- 11. Вращающиеся изображения
- 12. Испытание протекания NG Селеновые тесты через SSH
- 13. константные и STL контейнеры
- 14. Итераторы и контейнеры STL
- 15. DI Контейнеры и контроллеры
- 16. auto_ptr и контейнеры - C++
- 17. контейнеры МОК и IDisposable
- 18. Контейнеры и утечку памяти
- 19. YARN: Контейнеры и JVM
- 20. Привилегированные контейнеры и возможности
- 21. Указатели и контейнеры
- 22. Java-шаблон и контейнеры
- 23. Одиночные и множественные контейнеры
- 24. Настройка тайм-аута на селеновые webdriver.PhantomJS
- 25. Maven не будет компилировать селеновые зависимости
- 26. селеновые элементы между псевдо не находя
- 27. ctype и строки и контейнеры
- 28. Контейнеры на основе хоста и контейнеры на основе изображений
- 29. AVL дерево вращающиеся методы?
- 30. LWJGL Вращающиеся объекты
спасибо, мой друг, теперь я знаю процесс манипулирования динамическими страницами! Я очень благодарен! Одно небольшое примечание: цикл while становится бесконечным и будет непрерывно добавлять имена на последней странице, поэтому я добавил условие для разрыва после того, как счет достигнет 290 (284 игрока в списке), и Im не уверен, почему он делает это, потому что элемент должен не быть видимым, чтобы его можно было щелкнуть, но это не беспокоит .. спасибо вам, друг! – entercaspa