Очистить данные с сайта, используя селен - PullRequest
0 голосов
/ 22 октября 2019

Я все еще довольно любитель в Python, я пытаюсь очистить данные с веб-сайта, используя селен

 <small class="fxs_price_ohl"> <span>Open 1.29814</span> <span>High 1.29828</span> <span>Low 1.29775</span> </small> </div> </div> </li> <script type="application/ld+json">

, пытаясь получить данные Open 1.29814, High 1.29828 и Low 1.29775 из HTML-кода выше ^

count_element = browser.find_element_by_xpath("//small[@class='fxs_price_ohl']//span")
print(count_element.text)

Я использую селен с python, это мой код ^ Но count_element.text печатает пустой, как получить данные Открыть 1.29814, Высокий 1.29828 и Низкий 1.29775

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Вы также можете использовать селектор класса css для родителей с комбинатором потомков и селектор типа для дочерних промежутков, но вам также необходимо условие ожидания, поскольку страница загружается медленно

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

browser = webdriver.Chrome()
browser.get('https://www.fxstreet.com/rates-charts/gbpusd')
before_text = ''

while True: #this could be improved with a timeout
    elements = [i for i in WebDriverWait(browser,20).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".fxs_chart_cag_cont .fxs_price_ohl span")))]
    elem = elements[-1]
    if elem.text != before_text:
        break
print([elem.text for elem in elements])
0 голосов
/ 22 октября 2019

Используйте

"find_element s _by_xpath"

, если вы хотите получить несколько элементов.

count_elements = browser.find_elements_by_xpath("//small[@class='fxs_price_ohl']//span")
for ele in count_elements:
    print(ele.text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...