Код: Выделить всё
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
import pandas
from bs4 import BeautifulSoup as bs
import sys
#x = input("Word:")
chrome_service = Service(executable_path="C:\Program Files (x86)\msedgedriver.exe")
driver = webdriver.Edge(service=chrome_service)
driver.get("https://outils.biblissima.fr/en/collatinus-web/")
time.sleep(15)
driver.find_element(By.TAG_NAME, 'body').send_keys(Keys.COMMAND + 'r')
time.sleep(15)
driver.find_element(By.TAG_NAME, 'body').send_keys(Keys.COMMAND + 'r')
time.sleep(15)
search = driver.find_element(By.ID, "flexion_lemme")
search.send_keys('canis')
time.sleep(7)
submit = driver.find_elements(By.TAG_NAME, "button")
correct = submit[4]
correct.click()
time.sleep(15)
html = driver.page_source
if html.find("Une erreur s'est produite") != -1:
driver.find_element(By.TAG_NAME, 'body').send_keys(Keys.COMMAND + 'r')
time.sleep(20)
search = driver.find_element(By.ID, "flexion_lemme")
search.send_keys('canis')
time.sleep(7)
submit = driver.find_elements(By.TAG_NAME, "button")
correct = submit[4]
correct.click()
time.sleep(20)
html = driver.page_source
if html.find("Une erreur s'est produite") != -1:
driver.quit()
raise ZeroDivisionError("Nope.")
else:
results = driver.find_element(By.ID, "results")
titlesh4 = results.find_elements(By.TAG_NAME, "h4")
titlesp = results.find_elements(By.TAG_NAME, "p")
titleshref = results.find_elements(By.XPATH, "//*[ text() = 'Formes composées' ]")
html = driver.page_source
f = open('tables.html', "w", encoding="utf-8")
f.write(html)
f.close()
lh = open("tables.html", "r", encoding="utf-8")
soup = bs(lh, "html.parser")
prettyHTML=soup.prettify()
prettyHTML = prettyHTML.replace("ā", "a").replace("ă","a").replace("ā̆", "a").replace("ē","e").replace("ĕ", "e").replace("ē̆","e").replace("ī", "i").replace("ĭ", "i").replace("ī̆","i").replace("ō","o").replace("ō̆","o").replace("ŏ","o").replace("ŭ","u").replace("ū̆", "u").replace("ū","u")
f = open('tables.html', "w", encoding="utf-8")
f.write(prettyHTML)
f.close()
Проблема заключается в том, что речь идет о заголовках каждой таблицы, которую я рисую из функции. Я хочу, чтобы каждая таблица данных, которую я извлекаю из HTML, имела заголовок, с которым я мог бы работать. Но заголовки, которые дает программное обеспечение, имеют разные формы: h4, p, a и т. д. Кроме того, некоторые заголовки перекрывают другие в иерархии, например. заголовок таблицы «subjonctif» будет иметь другой заголовок, скажем, «actif» или что-то в этом роде. На мой взгляд, единственный способ сделать это - если бы программа могла обнаружить заголовок перед ним и принять решение на его основе. А еще эти иерархические; Я бы хотел, чтобы родительское имя было включено в каждый из меньших заголовков, т. е. «subjonctif» стало «actif subjonctif». Последняя проблема заключается в том, что некоторые заголовки содержат две или три (?) таблицы внутри себя, поэтому я бы хотел, чтобы их можно было помечать, например, как «подчиненный № 1)» и «подчинительный подчинённый № 2». По моему мнению, и, пожалуйста, поправьте меня, если я ошибаюсь, все эти проблемы можно было бы легко исправить, если бы программа знала, что было перед каждой таблицей.
Я особо ничего не пробовал, так как Я не уверен, с чего начать. Если кто-нибудь может помочь, мы будем очень признательны.
Подробнее здесь: https://stackoverflow.com/questions/786 ... tiful-soup