Итак, в рамках более крупного проекта я пишу некоторый скрипт на Python, чтобы ввести слово в онлайн-программу латинского морфологического анализа Collatinus (Collatinus) и получить полное склонение/спряжение этого слова. Вот что у меня есть на данный момент:
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». По моему мнению, и, пожалуйста, поправьте меня, если я ошибаюсь, все эти проблемы можно было бы легко исправить, если бы программа знала, что было перед каждой таблицей.
Я особо ничего не пробовал, так как Я не уверен, с чего начать. Если кто-нибудь может помочь, мы будем очень признательны.
Итак, в рамках более крупного проекта я пишу некоторый скрипт на Python, чтобы ввести слово в онлайн-программу латинского морфологического анализа Collatinus (Collatinus) и получить полное склонение/спряжение этого слова. Вот что у меня есть на данный момент: [code]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
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() [/code] Это все еще в разработке. Проблема заключается в том, что речь идет о заголовках каждой таблицы, которую я рисую из функции. Я хочу, чтобы каждая таблица данных, которую я извлекаю из HTML, имела заголовок, с которым я мог бы работать. Но заголовки, которые дает программное обеспечение, имеют разные формы: h4, p, a и т. д. Кроме того, некоторые заголовки перекрывают другие в иерархии, например. заголовок таблицы «subjonctif» будет иметь другой заголовок, скажем, «actif» или что-то в этом роде. На мой взгляд, единственный способ сделать это - если бы программа могла обнаружить заголовок перед ним и принять решение на его основе. А еще эти иерархические; Я бы хотел, чтобы родительское имя было включено в каждый из меньших заголовков, т. е. «subjonctif» стало «actif subjonctif». Последняя проблема заключается в том, что некоторые заголовки содержат две или три (?) таблицы внутри себя, поэтому я бы хотел, чтобы их можно было помечать, например, как «подчиненный № 1)» и «подчинительный подчинённый № 2». По моему мнению, и, пожалуйста, поправьте меня, если я ошибаюсь, все эти проблемы можно было бы легко исправить, если бы программа знала, что было перед каждой таблицей. Я особо ничего не пробовал, так как Я не уверен, с чего начать. Если кто-нибудь может помочь, мы будем очень признательны.
У меня есть URL-адрес, который я пытаюсь очистить:
Но кажется, я не могу его найти класс таблицы
QuantityBulk DiscountAdd to CartBuy 50 + ₱1.00 OffAdd to Cart
У меня уже есть код Selenium, но он все еще не очищается. Вот мой код:
from selenium...
У меня есть URL-адрес, который я пытаюсь очистить:
Но кажется, я не могу его найти класс таблицы
QuantityBulk DiscountAdd to CartBuy 50 + ₱1.00 OffAdd to Cart
У меня уже есть код Selenium, но он все еще не очищается. Вот мой код:
from selenium...
Используя Beautiful Soup, я работаю над довольно стандартной программой, которая анализирует HTML и извлекает данные на основе элементов CSS. Проблема, с которой я столкнулся, заключается в том, что когда я получаю тег CSS в необработанном виде,...
Используя Beautiful Soup, я работаю над довольно стандартной программой, которая анализирует HTML и извлекает данные на основе элементов CSS. Проблема, с которой я столкнулся, заключается в том, что когда я получаю тег CSS в необработанном виде,...