Проблемы с парсингом веб-страниц: извлечение чистых данных с веб-сайтов [закрыто]Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы с парсингом веб-страниц: извлечение чистых данных с веб-сайтов [закрыто]

Сообщение Anonymous »

Вопрос:
Я работаю над проектом парсинга веб-страниц, целью которого является извлечение чистых, структурированных данных с веб-сайтов для дальнейшего обогащения модели извлечения дополненной генерации (RAG). Хотя я успешно собираю и обрабатываю расшифровки стенограмм YouTube, я сталкиваюсь с проблемами при сборе данных веб-сайтов.
Мой подход:
  • Используемые технологии:
    • Selenium для динамического рендеринга контента
    • BeautifulSoup для анализа и извлечения HTML-контента.
    • Regex и NLTK для фильтрации нежелательных шаблонов и шума.
  • Шаги, которые я предпринял:
    • Удалены элементы HTML, такие как , и другие, которые не являются частью основного контента.
    • Используются шаблоны регулярных выражений для фильтрации нерелевантных данных, таких как даты, адреса электронной почты и URL-адреса.
    • Используются шаблоны регулярных выражений для фильтрации нерелевантных данных, таких как даты, адреса электронной почты и URL-адреса.
    • li>
      Применены стоп-слова NLTK для большей очистки текста.
  • < strong>Фрагменты кода:
    Вот образец из моего парсера BeautifulSoup:

    Код: Выделить всё

    from bs4 import BeautifulSoup
    import requests
    import re
    from nltk.corpus import stopwords
    
    stop_words = set(stopwords.words('english'))
    
    class BeautifulSoupScraper:
    @staticmethod
    def extract_text_from_url(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # Remove unwanted elements
    for unwanted in soup(['script', 'style', 'header', 'footer', 'nav', 'aside', 'form']):
    unwanted.decompose()
    
    paragraphs = soup.find_all('p')
    text = "\n".join([para.get_text() for para in paragraphs])
    return text
    
    @staticmethod
    def filter_text(text):
    # Removing unwanted patterns (e.g., URLs, dates, etc.)
    unwanted_patterns = [r'http[s]?://\S+', r'\b\d{1,2}[/-]\d{1,2}[/-]\d{2,4}\b']
    for pattern in unwanted_patterns:
    text = re.sub(pattern, '', text)
    return ' '.join([word for word in text.split() if word.lower() not in stop_words])
    
    Я также использую Selenium для динамического сбора результатов поиска:

    Код: Выделить всё

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    
    class GoogleSearch:
    @staticmethod
    def search(keyword, num_results=5):
    driver = webdriver.Chrome()
    driver.get(f"https://www.google.com/search?q={keyword}")
    elements = driver.find_elements(By.CLASS_NAME, "MjjYud")[:num_results]
    links = [element.find_element(By.TAG_NAME, 'a').get_attribute('href') for element in elements]
    driver.quit()
    return links
    
Проблема:
Несмотря на использование BeautifulSoup и регулярных выражений для фильтрации нежелательных данных , я по-прежнему слышу много шума в извлеченном контенте, особенно в разделах комментариев, рекламных объявлениях и других нерелевантных частях веб-страницы. Моя цель — аккуратно извлечь значимый текст (например, содержимое блога, текст статьи) без этого шума.
Что я пробовал:
  • Использование регулярных выражений для удаления распространенных шаблонов, таких как даты, URL-адреса и адреса электронной почты.
  • Удаление стоп-слов с помощью NLTK.
  • Фильтрация по ключевым словам (например, «подписаться», «комментарии»), но все равно остаются нежелательные разделы веб-страницы.
Что мне нужно:

Что мне нужно:
  • Рекомендации и рекомендации по улучшению процесса фильтрации, особенно по удалению нерелевантных разделов веб-страниц.
  • Рекомендации по дополнительным вопросам эффективные способы очистки очищенных данных, помимо регулярного выражения и базовой фильтрации стоп-слов.
  • Любые советы по тому, как сделать процесс извлечения более точным и бесшумным при работе с различными типами структур веб-сайтов.
    li>


Подробнее здесь: https://stackoverflow.com/questions/790 ... m-websites
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Проблемы с парсингом веб-страниц Python: неполное извлечение HTML-кода
    Гость » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Гость
  • Проблема с парсингом веб-страниц в Python [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Трудности с парсингом веб-страниц
    Anonymous » » в форуме Html
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как реализовать простой вход на несколько сайтов и общую панель администратора в Laravel для веб-сайтов электронной комм
    Anonymous » » в форуме Php
    0 Ответы
    64 Просмотры
    Последнее сообщение Anonymous
  • Как использовать VisibleForTesting для чистых тестов JUnit
    Anonymous » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»