Як встановити Beautiful Soup і використовувати його для проектів веб-збирання?

| | 0 Comments| 6:29 AM
Categories:

У сучасному світі, що керується даними, традиційний метод ручного збору даних застарів. Комп’ютер із підключенням до Інтернету на кожному столі зробив Інтернет величезним джерелом даних. Таким чином, більш ефективним і економним сучасним методом збору даних є веб-скрейпінг. А коли справа доходить до веб-збирання, у Python є інструмент під назвою Beautiful Soup. У цій публікації я проведу вас через кроки встановлення Beautiful Soup, щоб почати роботу з веб-збиранням.

Перш ніж встановлювати та працювати з Beautiful Soup, давайте з’ясуємо, чому вам варто це зробити.

Що таке прекрасний суп?

Давайте уявимо, що ви досліджуєте «Вплив COVID на здоров’я людей» і знайшли кілька веб-сторінок із відповідними даними. Але що, якщо вони не запропонують вам опцію завантаження в один клік, щоб запозичити їхні дані? Ось і вступає в гру прекрасний суп.

Beautiful Soup входить до списку бібліотек Python для отримання даних із цільових сайтів. Зручніше отримувати дані зі сторінок HTML або XML.

У 2004 році Леонард Річардсон запропонував ідею Beautiful Soup для сканування Інтернету. Але його внесок у проект продовжується й сьогодні. Він з гордістю оновлює кожен новий випуск Beautiful Soup у своєму обліковому записі Twitter.

Незважаючи на те, що Beautiful Soup для веб-скрейпінгу було розроблено з використанням Python 3.8, він чудово працює як з Python 3, так і з Python 2.4.

Часто веб-сайти використовують захист від капчі, щоб врятувати свої дані від інструментів ШІ. У цьому випадку кілька змін у заголовку «user-agent» у Beautiful Soup або використання API, що розв’язують Captcha, можуть імітувати надійний браузер і обдурити інструмент виявлення.

Однак, якщо у вас немає часу досліджувати Beautiful Soup або ви хочете, щоб копіювання було виконано ефективно та легко, тоді ви не повинні пропустити перевірку цього API веб-скрапінгу, де ви можете просто надати URL-адресу та отримати дані твої руки.

Якщо ви вже є програмістом, використання Beautiful Soup для скрейпінгу не складе труднощів через його простий синтаксис для навігації веб-сторінками та вилучення потрібних даних на основі умовного аналізу. У той же час він також зручний для новачків.

  Знайдіть фільми за жанром, темою, місцем, періодом тощо

Хоча Beautiful Soup не призначений для розширеного аналізу, він найкраще працює для збирання даних із файлів, написаних мовами розмітки.

Чітка та детальна документація — це ще одна головна перевага компанії Beautiful Soup.

Давайте знайдемо простий спосіб отримати гарний суп у вашій машині.

Як встановити Beautiful Soup для веб-збирання?

Pip – простий менеджер пакетів Python, розроблений у 2008 році, тепер є стандартним інструментом серед розробників для встановлення будь-яких бібліотек або залежностей Python.

Pip поставляється за замовчуванням із встановленням останніх версій Python. Таким чином, якщо у вашій системі встановлено будь-які останні версії Python, все готово.

Відкрийте командний рядок і введіть наступну команду pip, щоб миттєво встановити чудовий Soup.

pip install beautifulsoup4

На дисплеї ви побачите щось схоже на наведений нижче знімок екрана.

Переконайтеся, що ви оновили програму встановлення PIP до останньої версії, щоб уникнути типових помилок.

Команда для оновлення інсталятора pip до останньої версії:

pip install --upgrade pip

У цій публікації ми успішно покрили половину справи.

Тепер у вас на комп’ютері встановлено Beautiful Soup, тож давайте подивимося, як використовувати його для веб-збирання.

Як імпортувати та працювати з Beautiful Soup для веб-збирання?

Введіть наступну команду в середовищі IDE python, щоб імпортувати прекрасний Soup у поточний сценарій python.

from bs4 import BeautifulSoup

Тепер Beautiful Soup знаходиться у вашому файлі Python, щоб використовувати його для копіювання.

Давайте розглянемо приклад коду, щоб дізнатися, як видобувати потрібні дані за допомогою прекрасного Soup.

Ми можемо наказати Beautiful Soup шукати певні HTML-теги на вихідному веб-сайті та очищати дані, присутні в цих тегах.

У цьому матеріалі я буду використовувати marketwatch.com, який оновлює ціни акцій різних компаній у реальному часі. Давайте витягнемо деякі дані з цього веб-сайту, щоб ознайомитися з бібліотекою Beautiful Soup.

Імпортуйте пакет «запитів», який дозволить нам отримувати HTTP-запити та відповідати на них, а «urllib» завантажувати веб-сторінку з її URL-адреси.

from urllib.request import urlopen
import requests

Збережіть посилання на веб-сторінку у змінній, щоб потім легко отримати до нього доступ.

url="https://www.marketwatch.com/investing/stock/amzn"

Наступним буде використання методу “urlopen” з бібліотеки “urllib” для збереження сторінки HTML у змінній. Передайте URL-адресу функції urlopen і збережіть результат у змінній.

page = urlopen(url)

Створіть об’єкт Beautiful Soup і проаналізуйте потрібну веб-сторінку за допомогою «html.parser».

soup_obj = BeautifulSoup(page, 'html.parser')

Тепер весь сценарій HTML цільової веб-сторінки зберігається в змінній ‘soup_obj’.

  Як отримати нові функції Office 365 на шість місяців раніше

Перш ніж продовжити, давайте розглянемо вихідний код цільової сторінки, щоб дізнатися більше про HTML-сценарій і теги.

Клацніть правою кнопкою миші будь-де на веб-сторінці. Потім ви знайдете опцію перевірки, як показано нижче.

Натисніть «Перевірити», щоб переглянути вихідний код.

У наведеному вище вихідному коді ви можете знайти теги, класи та більш конкретну інформацію про кожен елемент, видимий в інтерфейсі веб-сайту.

Метод «знайти» у Beautiful Soup дозволяє нам шукати запитані теги HTML і отримувати дані. Для цього ми надаємо назву класу та теги методу, який витягує певні дані.

Наприклад, «Amazon.com Inc.» на веб-сторінці має назву класу: ‘company__name’ з тегом ‘h1’. Ми можемо ввести цю інформацію в метод «find», щоб отримати відповідний фрагмент HTML у змінну.

name = soup_obj.find('h1', attrs={'class': 'company__name'})

Давайте виведемо HTML-скрипт, що зберігається у змінній “name” та необхідний текст на екрані.

print(name)

print(name.text)

Ви можете побачити витягнуті дані, надруковані на екрані.

Web Scrape веб-сайт IMDb

Багато з нас шукають оцінки фільмів на сайті IMBb перед переглядом фільму. Ця демонстрація надасть вам список фільмів з найвищим рейтингом і допоможе вам звикнути до прекрасного Soup for web scraping.

Крок 1. Імпортуйте чудові бібліотеки Soup і запитів.

from bs4 import BeautifulSoup
import requests

Крок 2. Давайте призначимо URL-адресу, яку ми хочемо отримати, до змінної під назвою “url” для легкого доступу в коді.

Пакет «requests» використовується для отримання HTML-сторінки з URL-адреси.

url = requests.get('https://www.imdb.com/search/title/?count=100&groups=top_1000&sort=user_rating')

Крок 3: у наступному фрагменті коду ми розберемо HTML-сторінку поточної URL-адреси, щоб створити об’єкт прекрасного Soup.

soup_obj = BeautifulSoup(url.text, 'html.parser')

Змінна «soup_obj» тепер містить увесь сценарій HTML потрібної веб-сторінки, як на зображенні нижче.

  Як налаштувати підпис в Outlook

Давайте перевіримо вихідний код веб-сторінки, щоб знайти HTML-сценарій даних, які ми хочемо отримати.

Наведіть курсор на елемент веб-сторінки, який потрібно витягти. Далі клацніть правою кнопкою миші на ньому та виберіть опцію перевірки, щоб переглянути вихідний код цього конкретного елемента. Наступні візуальні матеріали допоможуть вам краще.

Клас «lister-list» містить усі дані, пов’язані з фільмами з найвищим рейтингом, як підрозділи в послідовних тегах div.

У сценарії HTML кожної картки фільму під класом «lister-item mode-advanced» ми маємо тег «h3», який зберігає назву фільму, ранг і рік випуску, як показано на зображенні нижче.

Примітка. Метод «find» у Beautiful Soup шукає перший тег, який відповідає наданій йому вхідній назві. На відміну від «find», метод «find_all» шукає всі теги, які відповідають заданому введенню.

Крок 4. Ви можете використовувати методи «find» і «find_all», щоб зберегти HTML-сценарій назви, рангу та року кожного фільму у змінній списку.

top_movies = soup_obj.find('div',attrs={'class': 'lister-list'}).find_all('h3')

Крок 5. Перегляньте список фільмів, збережених у змінній: “top_movies” і витягніть назву, ранг і рік кожного фільму в текстовому форматі з його сценарію HTML за допомогою наведеного нижче коду.

for movie in top_movies:
    movi_name = movie.a.text
    rank = movie.span.text.rstrip('.')
    year = movie.find('span', attrs={'class': 'lister-item-year text-muted unbold'})
    year = year.text.strip('()')
    print(movi_name + " ", rank+ " ", year+ " ")

На вихідному скріншоті ви можете побачити список фільмів з їх назвою, рангом і роком випуску.

Ви можете без особливих зусиль перемістити друковані дані на аркуш Excel із кодом Python і використовувати його для аналізу.

Заключні слова

Ця публікація допоможе вам встановити чудовий Soup для веб-збирання. Крім того, наведені мною приклади скрейпінгу мають допомогти вам розпочати роботу з Beautiful Soup.

Оскільки вас цікавить, як встановити Beautiful Soup для веб-скрапінгу, я настійно рекомендую вам переглянути цей зрозумілий посібник, щоб дізнатися більше про веб-скрапінг за допомогою Python.