使用 Selenium 从页面获取所有 H2 元素

问题描述 投票:0回答:1

根据我之前的two问题:Selenium 是否有类似 BeautifulSoup 的 Find All 的功能?

我需要获取像this one这样的页面中H2标签的所有内容。

JeffC 在前面的问题中引入的出色代码获取每个页面的一个特定标签的内容。但这里我每个页面最多有 20 个类似标签。

另外,我需要获取 H2 和 HREF 的文本。

目前状态:

driver = webdriver.Chrome(options=options)
driver.maximize_window()
wait = WebDriverWait(driver, 10)

url = 'http://www.biblioteca.presidencia.gov.br/presidencia/ex-presidentes/jose-sarney/discursos/1985?b_start:int=0'
driver.get(url)
h2 = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, "tileHeadline"))).text
print(h2)

到目前为止,代码仅带来每个页面中的第一个元素。我应该更改 EC 元件内的规格吗?

python selenium-webdriver web-scraping
1个回答
0
投票

此脚本获取

h2 a
元素、
href
、文本,然后打印这些:

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

options = webdriver.ChromeOptions()
options.add_argument("--disable-notifications")
options.add_experimental_option("excludeSwitches", ["enable-automation", "enable-logging"])
driver = webdriver.Chrome(options=options)
wait = WebDriverWait(driver, 10)
try:
    driver.get("http://www.biblioteca.presidencia.gov.br/presidencia/ex-presidentes/jose-sarney/discursos/1985?b_start:int=0")
    wait.until(EC.visibility_of_element_located(("css selector", ".tileHeadline")))
    elements = driver.find_elements("css selector", "h2 a")
    for element in elements:
        print()
        print(element.get_attribute("href"))
        print(element.text)
finally:
    driver.quit()

输出的前几行:

http://www.biblioteca.presidencia.gov.br/presidencia/ex-presidentes/jose-sarney/discursos/1985/01.pdf/view
15 de março de 1985 - Pronunciamento do Presidente José Sarney, no exercício da Presidência da República, ao empossar o ministério

http://www.biblioteca.presidencia.gov.br/presidencia/ex-presidentes/jose-sarney/discursos/1985/02.pdf/view
17 de março de 1985 - Pronunciamento da Presidente José Sarney, no exercício da Presidência da república, por ocasião da abertura da primeira reunião do ministério da nova República

http://www.biblioteca.presidencia.gov.br/presidencia/ex-presidentes/jose-sarney/discursos/1985/28%20de%20marco%20de%201985/view
28 de março de 1985 - Pronunciamento do Presidente José Sarney, no exercício da Presidência da República, ao receber a bancada do PMDB no Rio de Janeiro
© www.soinside.com 2019 - 2024. All rights reserved.