«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как Beautiful Soup используется для извлечения данных из общедоступной сети

Как Beautiful Soup используется для извлечения данных из общедоступной сети

Опубликовано 1 августа 2024 г.
Просматривать:506

How Beautiful Soup is used to extract data out of the Public Web

Beautiful Soup — это библиотека Python, используемая для очистки данных с веб-страниц. Он создает дерево синтаксического анализа для анализа документов HTML и XML, что упрощает извлечение нужной информации.

Beautiful Soup предоставляет несколько ключевых функций для парсинга веб-страниц:

  1. Навигация по дереву разбора: Вы можете легко перемещаться по дереву разбора и искать элементы, теги и атрибуты.
  2. Изменение дерева разбора: Позволяет изменять дерево разбора, включая добавление, удаление и обновление тегов и атрибутов.
  3. Форматирование вывода: Вы можете преобразовать дерево синтаксического анализа обратно в строку, что упрощает сохранение измененного содержимого.

Чтобы использовать Beautiful Soup, вам необходимо установить библиотеку вместе с парсером, например lxml или html.parser. Вы можете установить их с помощью pip

#Install Beautiful Soup using pip.
pip install beautifulsoup4 lxml

Обработка нумерации страниц

При работе с веб-сайтами, контент которых отображается на нескольких страницах, обработка нумерации страниц необходима для сбора всех данных.

  1. Определите структуру нумерации страниц: Проверьте веб-сайт, чтобы понять, как структурирована нумерация страниц (например, кнопка следующей страницы или пронумерованные ссылки).
  2. Перебор страниц: Используйте цикл для перебора каждой страницы и очистки данных.
  3. Обновите URL-адрес или параметры: Измените URL-адрес или параметры, чтобы получить содержимое следующей страницы.
import requests
from bs4 import BeautifulSoup

base_url = 'https://example-blog.com/page/'
page_number = 1
all_titles = []

while True:
    # Construct the URL for the current page
    url = f'{base_url}{page_number}'
    response = requests.get(url)
    soup = BeautifulSoup(response.content, 'html.parser')

    # Find all article titles on the current page
    titles = soup.find_all('h2', class_='article-title')
    if not titles:
        break  # Exit the loop if no titles are found (end of pagination)

    # Extract and store the titles
    for title in titles:
        all_titles.append(title.get_text())

    # Move to the next page
    page_number  = 1

# Print all collected titles
for title in all_titles:
    print(title)

Извлечение вложенных данных

Иногда данные, которые необходимо извлечь, вложены в несколько слоев тегов. Вот как обрабатывать вложенные данные.

  1. Перейдите к родительским тегам: Найдите родительские теги, содержащие вложенные данные.
  2. Извлечение вложенных тегов: Внутри каждого родительского тега найдите и извлеките вложенные теги.
  3. Перебор вложенных тегов: Перебор вложенных тегов для извлечения необходимой информации.
import requests
from bs4 import BeautifulSoup

url = 'https://example-blog.com/post/123'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

# Find the comments section
comments_section = soup.find('div', class_='comments')

# Extract individual comments
comments = comments_section.find_all('div', class_='comment')

for comment in comments:
    # Extract author and content from each comment
    author = comment.find('span', class_='author').get_text()
    content = comment.find('p', class_='content').get_text()
    print(f'Author: {author}\nContent: {content}\n')

Обработка запросов AJAX

Многие современные веб-сайты используют AJAX для динамической загрузки данных. Обработка AJAX требует различных методов, таких как мониторинг сетевых запросов с помощью инструментов разработчика браузера и репликация этих запросов в парсере.

import requests
from bs4 import BeautifulSoup

# URL to the API endpoint providing the AJAX data
ajax_url = 'https://example.com/api/data?page=1'
response = requests.get(ajax_url)
data = response.json()

# Extract and print data from the JSON response
for item in data['results']:
    print(item['field1'], item['field2'])

Риски парсинга веб-страниц

Парсинг веб-страниц требует тщательного рассмотрения юридических, технических и этических рисков. Внедрив соответствующие меры безопасности, вы можете снизить эти риски и проводить парсинг веб-страниц ответственно и эффективно.

  • Нарушения Условий обслуживания: многие веб-сайты прямо запрещают сбор данных в своих Условиях обслуживания (ToS). Нарушение этих условий может привести к судебным искам.
  • Проблемы интеллектуальной собственности: удаление контента без разрешения может нарушить права интеллектуальной собственности, что приведет к юридическим спорам.
  • Блокировка IP: веб-сайты могут обнаруживать и блокировать IP-адреса, которые демонстрируют поведение парсинга.
  • Блокировка учетных записей: если парсинг выполняется на веб-сайтах, требующих аутентификации пользователя, учетная запись, используемая для парсинга, может быть заблокирована.

Beautiful Soup — это мощная библиотека, которая упрощает процесс парсинга веб-страниц, предоставляя простой в использовании интерфейс для навигации и поиска в документах HTML и XML. Он может выполнять различные задачи синтаксического анализа, что делает его незаменимым инструментом для всех, кто хочет извлечь данные из Интернета.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/marcosconci/how-beautiful-soup-is-used-to-extract-data-out-of-the-public-web-51gg?1 При наличии каких-либо нарушений , пожалуйста, свяжитесь с Study_golang @163.comdelete
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3