Наприклад, якщо ви хочете регулярно отримувати оновлення своїх улюблених продуктів для пропозицій зі знижками або хочете автоматизувати процес завантаження епізодів улюбленого сезону по одному, а веб-сайт не має жодного API для цього, тоді єдиний вибір вам залишається веб-скрапінг.Викрабування веб-сторінок може бути незаконним на деяких веб-сайтах, залежно від того, дозволяє веб-сайт це чи ні. На веб-сайтах використовуються „роботи.txt ”для чіткого визначення URL-адрес, заборонених до скасування. Ви можете перевірити, чи дозволяє це веб-сайт, додавши „роботи.txt ”з доменним ім’ям веб-сайту. Наприклад, https: // www.Google.com / robots.txt
У цій статті ми будемо використовувати Python для вишкрібання, оскільки він дуже простий у налаштуванні та використанні. У ньому є безліч вбудованих та сторонніх бібліотек, які можна використовувати для вилучення та упорядкування даних. Ми використаємо дві бібліотеки Python “urllib” для отримання веб-сторінки та “BeautifulSoup” для синтаксичного аналізу веб-сторінки для застосування операцій програмування.
Як працює веб-скрепінг?
Ми надсилаємо запит на веб-сторінку, звідки ви хочете зішкребти дані. Веб-сайт відповість на запит HTML-вмістом сторінки. Потім ми можемо проаналізувати цю веб-сторінку на BeautifulSoup для подальшої обробки. Щоб отримати веб-сторінку, ми будемо використовувати бібліотеку “urllib” у Python.
Urllib завантажить вміст веб-сторінки у форматі HTML. Ми не можемо застосовувати рядкові операції до цієї веб-сторінки HTML для вилучення вмісту та подальшої обробки. Ми будемо використовувати бібліотеку Python “BeautifulSoup”, яка буде аналізувати вміст і витягувати цікаві дані.
Витирання статей з Linuxhint.ком
Тепер, коли ми маємо уявлення про те, як працює вискоблювання веб-сторінок, давайте попрактикуємось. Ми спробуємо викреслити заголовки статей та посилання з Linuxhint.ком. Тож відкрийте https: // linuxhint.com / у вашому браузері.
Тепер натисніть CRTL + U, щоб переглянути вихідний HTML-код веб-сторінки.
Скопіюйте вихідний код і перейдіть до https: // htmlformatter.com /, щоб втілити код. Після того, як вводите код, його легко перевірити та знайти цікаву інформацію.
Тепер знову скопіюйте відформатований код і вставте його у свій улюблений текстовий редактор, як atom, піднесений текст тощо. Тепер ми скрепаємо цікаву інформацію за допомогою Python. Введіть наступне
// Встановіть красиву бібліотеку супів, urllib приходитьпопередньо встановлену в Python
ubuntu @ ubuntu: ~ $ sudo pip3 встановити bs4
ubuntu @ ubuntu: ~ $ python3
Python 3.7.3 (за замовчуванням, 7 жовтня 2019, 12:56:13)
[GCC 8.3.0] на Linux
Введіть "довідка", "авторське право", "кредити" або "ліцензія" для отримання додаткової інформації.
// Імпорт urllib>>> імпортувати urllib.запит
// Імпорт BeautifulSoup
>>> з bs4 імпортувати BeautifulSoup
// Введіть URL-адресу, яку потрібно отримати
>>> my_url = 'https: // linuxhint.com / '
// Запитуємо URL-адресу веб-сторінки за допомогою команди urlopen
>>> клієнт = urllib.запит.urlopen (my_url)
// Зберігаємо веб-сторінку HTML у змінній “html_page”
>>> html_page = клієнт.читати ()
// Закрити URL-з'єднання після отримання веб-сторінки
>>> клієнт.закрити ()
// аналізуємо веб-сторінку HTML на BeautifulSoup для вишкрібання
>>> page_soup = BeautifulSoup (html_page, "html.парсер ")
Тепер давайте розглянемо вихідний код HTML, який ми щойно скопіювали та вставили, щоб знайти речі, які нас цікавлять.
Ви бачите, що перша стаття перерахована на Linuxhint.com називається “74 Bash Operators Examples”, знайдіть це у вихідному коді. Він укладений між тегами заголовка, а його код -
title = "Приклади 74 Bash-операторів"> 74 Bash-оператори
Приклади
Той самий код повторюється знову і знову зі зміною лише заголовків статей та посилань. Наступна стаття містить наступний HTML-код
title = "Як налаштувати кеш-пам’ять на Ubuntu 18.04 ">
Як налаштувати кеш-пам’ять на Ubuntu 18.04
Ви бачите, що всі статті, включаючи ці дві, містяться в одному і тому ж “
”І використовуйте той самий клас“ entry-title ”. Ми можемо використовувати функцію “findAll” у бібліотеці Beautiful Soup, щоб знайти та перерахувати всі “”З класом“ запис-заголовок ”. Введіть у консолі Python наступне // Ця команда знайде всі “”Елементи тегу, що мають іменований клас
“Запис-заголовок”. Вихідні дані зберігатимуться в масиві.
>>> статті = сторінка_супу.findAll ("h2" ,
"class": "entry-title")
// Кількість статей, знайдених на першій сторінці Linuxhint.ком
>>> len (статті)
102
// Перший витяг “”Елемент тегу, що містить назву статті та посилання
>>> статті [0]
title = "74 Приклади операторів Bash">
74 Приклади операторів Bash
// Другий витяг “”Елемент тегу, що містить назву статті та посилання
>>> статті [1]
title = "Як налаштувати кеш-пам’ять на Ubuntu 18.04 ">
Як налаштувати кеш-пам’ять на Ubuntu 18.04
// Відображення лише тексту в тегах HTML за допомогою текстової функції
>>> статті [1].текст
'Як налаштувати кеш-пам'ять на Ubuntu 18.04 '
”Елементи тегу, що мають іменований клас
“Запис-заголовок”. Вихідні дані зберігатимуться в масиві.
>>> статті = сторінка_супу.findAll ("h2" ,
"class": "entry-title")
// Кількість статей, знайдених на першій сторінці Linuxhint.ком
>>> len (статті)
102
// Перший витяг “”Елемент тегу, що містить назву статті та посилання
>>> статті [0]
title = "74 Приклади операторів Bash">
74 Приклади операторів Bash
// Другий витяг “”Елемент тегу, що містить назву статті та посилання
>>> статті [1]
title = "Як налаштувати кеш-пам’ять на Ubuntu 18.04 ">
Як налаштувати кеш-пам’ять на Ubuntu 18.04
// Відображення лише тексту в тегах HTML за допомогою текстової функції
>>> статті [1].текст
'Як налаштувати кеш-пам'ять на Ubuntu 18.04 '
>>> статті [0]
title = "74 Приклади операторів Bash">
74 Приклади операторів Bash
// Другий витяг “
”Елемент тегу, що містить назву статті та посилання
>>> статті [1]
title = "Як налаштувати кеш-пам’ять на Ubuntu 18.04 ">
Як налаштувати кеш-пам’ять на Ubuntu 18.04
// Відображення лише тексту в тегах HTML за допомогою текстової функції
>>> статті [1].текст
'Як налаштувати кеш-пам'ять на Ubuntu 18.04 '
title = "Як налаштувати кеш-пам’ять на Ubuntu 18.04 ">
Як налаштувати кеш-пам’ять на Ubuntu 18.04
Тепер, коли ми маємо список усіх 102 HTML “
”Елементи тегу, що містить посилання на статтю та заголовок статті. Ми можемо витягувати як посилання на статті, так і заголовки. Щоб витягти посилання з “”, Ми можемо використовувати наступний код // Наступний код витягне посилання з першого елемент тегу
>>> для посилання в статтях [0].find_all ('a', href = True):
... друк (посилання ['href'])
..
https: // linuxhint.com / bash_operator_examples /
Тепер ми можемо написати цикл for, який повторюється через кожну “
”Елемент тегу у списку“ статті ”та витягніть посилання та заголовок статті. >>> для i в діапазоні (0,10):
... друк (статті [i].текст)
... для посилання в статтях [i].find_all ('a', href = True):
… Друк (посилання ['href'] + "\ n")
..
74 Приклади операторів Bash
https: // linuxhint.com / bash_operator_examples /
Як налаштувати кеш-пам’ять на Ubuntu 18.04
https: // linuxhint.com / varnish_cache_ubuntu_1804 /
PineTime: розумний годинник, зручний для Linux
https: // linuxhint.com / pinetime_linux_smartwatch /
10 найкращих дешевих ноутбуків Linux, які можна придбати за бюджет
https: // linuxhint.com / best_cheap_linux_laptops /
HD Remastered Games для Linux, які ніколи не випускали Linux ..
https: // linuxhint.com / hd_remastered_games_linux /
Програми для запису екрану на 60 кадрів в секунду для Linux
https: // linuxhint.com / 60_fps_screen_recording_apps_linux /
74 Приклади операторів Bash
https: // linuxhint.com / bash_operator_examples /
... відрізати ..
Аналогічним чином ви зберігаєте ці результати у файлі JSON або CSV.
Висновок
Ваші щоденні завдання - це не лише управління файлами або виконання системних команд. Ви також можете автоматизувати завдання, пов'язані з Інтернетом, такі як автоматизація завантаження файлів або вилучення даних, скребуючи веб в Python. Ця стаття була обмежена лише простим вилученням даних, але ви можете зробити величезну автоматизацію завдань за допомогою “urllib” та “BeautifulSoup”.
>>> для посилання в статтях [0].find_all ('a', href = True):
... друк (посилання ['href'])
..
https: // linuxhint.com / bash_operator_examples /
... друк (статті [i].текст)
... для посилання в статтях [i].find_all ('a', href = True):
… Друк (посилання ['href'] + "\ n")
..
74 Приклади операторів Bash
https: // linuxhint.com / bash_operator_examples /
Як налаштувати кеш-пам’ять на Ubuntu 18.04
https: // linuxhint.com / varnish_cache_ubuntu_1804 /
PineTime: розумний годинник, зручний для Linux
https: // linuxhint.com / pinetime_linux_smartwatch /
10 найкращих дешевих ноутбуків Linux, які можна придбати за бюджет
https: // linuxhint.com / best_cheap_linux_laptops /
HD Remastered Games для Linux, які ніколи не випускали Linux ..
https: // linuxhint.com / hd_remastered_games_linux /
Програми для запису екрану на 60 кадрів в секунду для Linux
https: // linuxhint.com / 60_fps_screen_recording_apps_linux /
74 Приклади операторів Bash
https: // linuxhint.com / bash_operator_examples /
... відрізати ..