Сбор данных с easports.com, проблемы с - PullRequest
0 голосов
/ 21 июня 2020

Итак, я работал над Python WebScraper, который сканирует веб-сайт в поисках данных (например, о победах и поражениях) из нашего FIFA ProClub. У меня он работает на стороннем веб-сайте только с BeautifulSoup и запросами, но теперь я борюсь с сайтом www.ea.com/de-de/games/fifa/fifa-20/pro-clubs/rankings не только потому, что таблица занимает некоторое время для загрузки (думал, что исправил это с помощью «ждать загрузки элемента»), но также и с исходным кодом. По-видимому, код не отображается полностью при загрузке чистого исходного кода, как раз тогда, когда я проверяю указанный элемент c, который я хочу очистить. Я также заметил, что загрузка кода при проверке занимает некоторое время. Думаю, часть проблемы заключается в элементе «ea-elements-loader», в котором размещаются нужные мне div, но я не совсем понимаю, что они там сделали . Basi c очистка не моя проблема, и я знаю, что селен может быть излишним.

Подводя итог, основная проблема заключается в том, что при печати кода класс div, который я искал, отсутствует , даже сложно, это проявляется при использовании инструмента проверки chrome.

Я действительно застрял на этом этапе, код ниже

from selenium import webdriver
from bs4 import BeautifulSoup
import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

DRIVER_PATH = './chromedriver.exe'
driver = webdriver.Chrome(options=options, executable_path=DRIVER_PATH)
driver.get("https://www.ea.com/de-de/games/fifa/fifa-20/pro-clubs/rankings")

#edited
time.sleep(5)

print(driver.page_source)
soup = BeautifulSoup(driver.page_source, 'html.parser')
code_soup = soup.find_all(("div", {"class": "eapl-proclub-table__data"}))
driver.quit()

1 Ответ

0 голосов
/ 21 июня 2020

Поскольку я тестировал ваш код, кажется, что исключение тайм-аута вызывается следующей строкой:

myElem = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'eapl-proclub-table__data')))

Я заменил эту строку на:

time.sleep(5)

И ваш код работает. Он распечатывает весь page_source

...