Как получить href от h3 Selenium / Python? - PullRequest
2 голосов
/ 16 апреля 2020

URL: https://www.piie.com/research/economic-issues/coronavirus

Я пытаюсь извлечь hrefs из класса "field field - title", но моя кодировка не работает

driver.get('https://www.piie.com/research/economic-issues/coronavirus')

for i in driver.find_elements_by_class_name('field field--title'):
    for a in i.find_elements_by_css_selector('a'):
        print(a.get_attribute('href'))
        print(a.text)

HTML показано ниже:

enter image description here

Кто-нибудь может мне помочь с этой проблемой? Спасибо

1 Ответ

2 голосов
/ 16 апреля 2020

Вам следует подождать, пока элементы появятся на веб-странице, прежде чем пытаться что-то получить от них. Для этого у Selenium есть неявные и явные решения ожидания. Вы можете найти очень хорошую информацию об обоих ожиданиях здесь и здесь .

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

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

with webdriver.Chrome() as driver:
    wait = WebDriverWait(driver, 10)

    driver.get('https://www.piie.com/research/economic-issues/coronavirus')

    items = wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, '.field--title a')))
    for item in items:
        print(item.text, item.get_attribute('href'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...