#python #selenium #web-scraping #selenium-chromedriver
#python #селен #веб-очистка #selenium-chromedriver
Вопрос:
Я пытаюсь очистить данные из таблицы PR College на https://gbr.milesplit.com/athletes/pro/5424599/stats Код выглядит следующим образом
prTable = wait.until(EC.presence_of_element_located((By.XPATH, '/html/body/div[5]/div/aside/div[4]/table')))
Иногда ответ, который я получаю, правильный, это строка, содержащая личные записи. В других случаях он просто берет случайную информацию с веб-страницы, а иногда и не может найти элемент. Я довольно смущен тем, почему это работает иногда, но не всегда. Есть ли лучший способ, чем xpath, или я использую неправильный тег?
Комментарии:
1. Можете ли вы использовать
BeautifulSoup
?2. Я никогда не использовал BS, как бы я мог использовать его в этом контексте?
3. Я опубликовал пример с
beautifulsoup
4. Если сайт динамический
bs4
, это не будет сделано. @CMB Поскольку вы сказали, что он получает случайную информацию, я думаю, вам не следует пытаться получить информациюXpath
. Попробуйте получить то, что вы хотите, используя имя класса, идентификатор и т.д. Этот способ более точен.
Ответ №1:
Используйте этот пример, как вы можете проанализировать страницу с помощью beautifulsoup
:
from bs4 import BeautifulSoup
import requests
url = 'https://gbr.milesplit.com/athletes/pro/5424599/stats'
soup = BeautifulSoup(requests.get(url).content, 'html.parser')
for event, time in zip(soup.select('td.event'),
soup.select('td.time')):
print(event.text, time.text)
С принтами:
800 Meter Run 1:48.05
1500 Meter Run 3:35.01
800 Meter Run 1:48.87
One Mile Run 3:57.02
8000 Meter Run 24:01.50
10,000 Meter Run 30:43.50
800 Meter Run 1:52.25
One Mile Run 4:05.32
1500 Meter Run 3:43.46
800 Meter Run 1:48.05
1500 Meter Run 3:35.01
800 Meter Run 1:48.87
One Mile Run 3:57.02
8000 Meter Run 24:01.50
10,000 Meter Run 30:43.50
800 Meter Run 1:52.25
One Mile Run 4:05.32
1500 Meter Run 3:43.46