Цель – извлечь Заголовок воспоминания (
Код: Выделить всё
mw-headline Проблема
Мой текущий сценарий успешно идентифицирует все заголовки памяти, но функция, предназначенная для извлечения основного содержимого TOME, часто неправильно включает общий TOME. вводный текст (большой обзорный абзац в самом верху статьи) в тело извлеченного первого журнала памяти. Это приводит к дублированию и неправильному основному тексту для многих последующих записей памяти.
Основная проблема заключается в правильном определении области извлечения содержимого: мне нужно убедиться, что при поиске содержимого тела памяти после заголовка памяти он просматривает только элементы до следующего заголовка памяти.
Мой текущий подход (упрощенный)
У меня есть две основные функции:
- : находит основной раздел «Воспоминания и журналы» и перебирает отдельные заголовки воспоминаний (
Код: Выделить всё
crawl_and_extract_tags).Код: Выделить всё
mw-headline - : принимает тег заголовка памяти и просматривает его следующих одноуровневых элементов, чтобы найти содержимое тела до следующего основного заголовка.
Код: Выделить всё
extract_content_after_headline
Код: Выделить всё
def extract_content_after_headline(headline_tag):
body_content = []
# Finds the immediate parent heading (e.g., ) of the specific memory title ()
parent_heading = headline_tag.find_parent(['h2', 'h3', 'h4'])
if not parent_heading:
return "Parent tag not found", ""
# Start searching from the next sibling of the parent heading
current_element = parent_heading.next_sibling
# Loop until the next major heading (h2, h3, h4) is found
while current_element and current_element.name not in ['h2', 'h3', 'h4']:
if current_element.name in ['td', 'p', 'div', 'blockquote', 'li']:
element_text = current_element.get_text(separator=' ', strip=True)
if element_text:
body_content.append(element_text)
current_element = current_element.next_sibling
return "\n\n".join(body_content), "" # Omitted italics content for brevity
- Как я могу изменить extract_content_after_headline, чтобы надежно захватывать только контент, принадлежащий этому конкретному журналу памяти, без использования общего введения страницы?
- Есть ли лучший способ структурировать поток извлечения (например, найти границы основных «Воспоминаний и Журналы" более строго), чтобы вводный текст не воспринимался как тело первой памяти?
Код: Выделить всё
find_next_siblingПолный код:
import os
import requests
from bs4 import BeautifulSoup
import pandas as pd
# pandas가 Excel 파일 읽기/쓰기를 위해 openpyxl을 사용합니다.
# --- 상수 설정 ---
# 파일 확장자를 .xlsx로 변경
DEFAULT_TEXT_FILENAME = "DbD_TOME_Extracted_Data.xlsx"
def extract_content_after_headline(headline_tag):
"""
주어진 mw-headline 태그 뒤에 오는 메모리 본문 (모든 텍스트 요소)과
이탤릭체 내용 ()을 다음 헤드라인이 나타날 때까지 추출합니다.
핵심 개선: 텍스트 노드와 함께

Таким образом, основные текстовые предложения не выравниваются должным образом в Excel.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ithin-a-la
Мобильная версия