Тема: Як скопіювати текст із форматуванням за допомогою Python + Selenium?
Я використовую Python + Selenium і мені потрібно скопіювати текст з веб-сторінки до буфера обміну ОС Windows з форматуванням.
Наприклад, коли ви копіюєте текст з веб-сторінки, натискаючи комбінацію клавіш Ctrl+C, а потім вставляєте його в Microsoft Word, використовуючи комбінацію клавіш Ctrl+V, ви можете побачити, що текст скопійований з форматуванням.
Я хочу досягти такого ж результату зі скриптом Python + Selenium, який переходить на веб-сайт і копіює отформатований текст в буфер обміну. Потім я хочу вручну відкрити Microsoft Word, натиснути Ctrl+V і вставити текст зі своїм форматуванням.
Ось приклад мого коду, але він копіює лише стилі, а не форматування:
import time
import pyperclip
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
# Налаштування параметрів Chrome
options = Options()
options.add_argument("--headless")
options.add_argument("--disable-gpu")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
# Запуск драйвера Chrome
driver = webdriver.Chrome(options=options)
# Перехід на веб-сторінку
driver.get("https://example.com/")
time.sleep(2) # чекаємо завантаження сторінки
# Знаходження елемента, що містить текст
element = driver.find_element("xpath", "/html/body/div")
text = element.get_attribute("innerHTML")
# ----> АБО: text = driver.find_element("tag name", "body").text # теж не копіює форматування
# Копіюємо текст в буфер обміну
pyperclip.copy(text)
# Закриваємо драйвер
driver.quit()
Питання: Як можна скопіювати текст з форматуванням, використовуючи Selenium?
Примітка: Я знаю, що можна симулювати натискання клавіш:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from time import sleep
# Create a new instance of the Chrome driver
driver = webdriver.Chrome()
# Navigate to example.com
driver.get("https://en.wikipedia.org/wiki/List_of_lists_of_lists")
# Find the element that contains the text to copy
element = driver.find_element(By.XPATH, '//*[@id="mw-content-text"]/div[1]/ul[4]')
# Select all the text on the page and copy it to the clipboard
actions = ActionChains(driver)
actions.move_to_element(element)
ActionChains(driver).click(element).key_down(Keys.CONTROL).send_keys("a").key_up(Keys.CONTROL).key_down(Keys.CONTROL).send_keys("c").key_up(Keys.CONTROL).perform()
# Quit the driver
driver.quit()
але цей варіант не підходить, тому що я не знаю, як вибрати окремий елемент, а не весь документ