Я пытаюсь использовать BeautifulSoup для анализа iframe, содержащего новостную статью на корейском языке, и распечатывать каждый отдельный абзац основного текста в статье.Поскольку корейский контент абзаца находится в теге ap в его собственном теге td с идентификатором класса «tlTD», я решил, что могу просто пройтись по каждому td с этим именем класса и напечатать тег p следующим образом:
link ="https://gloss.dliflc.edu/GlossHtml/GlossHTML.html?disableBrowserLockout=true&gloss=true&glossLoXmlFileName=/GlossHtml/templates/linksLO/glossLOs/kp_cul312.xml&glossMediaPathRoot=https://gloss.dliflc.edu/products/gloss/"
base_url = "https://oda.dliflc.edu"
driver = webdriver.Chrome()
driver.get(link)
python_button = driver.find_element_by_id("gloss_link_source")
python_button.click()
source_src= driver.find_element_by_id("glossIframe").get_attribute("src")
source_url = urljoin(base_url, source_src)
driver.get(source_url)
soup = BeautifulSoup(driver.page_source, "lxml")
for td in soup.find_all("td", class_="tlTD"):
print(soup.find("p").getText())
Проблема в том, что вместо печати абзацев основного текста код повторно печатает только заголовок статьи, который находится в своем собственном td с классом «title tlTD».Я попытался использовать лямбда-выражение и регулярное выражение, чтобы сделать имя класса более эксклюзивным, но я продолжал получать тот же результат.Изменение soup.find("p")
на find_all
успешно заставило код печатать то, что я хотел, но также напечатало кучу англоязычных версий контента, которые мне не нужны.
Я могу понять, почему содержимое заголовка статьи будет напечатано, поскольку оно включает в себя «tlTD» в названии класса, но я озадачен тем, откуда берется английский контент.Когда я проверил страницу в Google Chrome, на ней не было никаких абзацев с английским текстом, так почему же BeautifulSoup это удаляет?Может кто-нибудь помочь мне объяснить, что здесь происходит, и как я могу получить этот код, чтобы просто напечатать содержимое абзаца с корейским текстом?