您不需要明确下载Chrome驱动程序。现代硒版本可以为您处理。
因此,您所需要的就是:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.remote.webelement import WebElement
from collections.abc import Iterable
OPTIONS = webdriver.ChromeOptions()
OPTIONS.add_argument("--headless=true")
URL = "https://tech12h.com/bai-hoc/trac-nghiem-lich-su-12-bai-1-su-hinh-thanh-trat-tu-gioi-moi-sau-chien-tranh-gioi-thu-hai"
CSS_P = "#accordionExample > p"
CSS_L = "#accordionExample > ul li"
def etext(e: WebElement) -> str:
if t := e.text:
return t.strip()
p = e.get_property("textContent")
if isinstance(p, str):
return p.strip()
return ""
def get_common(driver: webdriver.Chrome, css: str) -> Iterable[str]:
wait = WebDriverWait(driver, 10)
ec = EC.presence_of_all_elements_located
selector = By.CSS_SELECTOR, css
yield from map(etext, wait.until(ec(selector)))
def chunks(items: list[str], chunk=4) -> Iterable[list[str]]:
for i in range(0, len(items), chunk):
yield items[i : i + chunk]
if __name__ == "__main__":
with webdriver.Chrome(OPTIONS) as driver:
driver.get(URL)
questions = list(get_common(driver, CSS_P))
answers = list(get_common(driver, CSS_L))
assert len(questions) * 4 == len(answers)
qanda = dict(zip(questions, chunks(answers)))
for k, v in qanda.items():
print(k)
for a in v:
print(f"\t{a}")
输出(部分):
Câu 1: Äá» kết thúc nhanh chiến tranh á» châu Ãu và châu à - Thái Bình - Dương, ba cưá»ng quá»c Äã thá»ng nhất mục ÄÃch gì?
A. Sá» dụng bom nguyên tá» Äá» tiêu diá»t phát xÃt Nháºt.
B. Há»ng quân Liên Xô nhanh chóng tấn công và o táºn sà o huyá»t cá»§a phát xÃt Äức á» Bec-lin.
C. Tiêu diá»t táºn gá»c chá»§ nghÄ©a phát xÃt Äức và quân phiá»t Nháºt.
D. Tất cả các mục ÄÃch trên.
Câu 2: Sá»± kiá»n nà o dẫn Äến thà nh láºp nưá»c Cá»ng hòa Liên bang Äức?
A. Nưá»c Äức ÄÆ°á»£c hòan toà n thá»ng nhất.
B. Nưá»c Äức Äã tiêu diá»t táºn gá»c chá»§ nghÄ©a phát xÃt.
C. MÄ©, Anh, Pháp hợp nhất các vùng chiếm Äóng.
D. Tất cả các sá»± kiá»n trên.