Веб-вишкрібання

Веб-скрапінг за допомогою Python

Веб-скрапінг за допомогою Python
Веб-скрапінг - це автоматизований спосіб отримання та обробки інформації з веб-сайтів в дуже великій кількості. Дані на веб-сайтах в Інтернеті не структуровані, їх можна збирати та структурувати за допомогою веб-скрапінгу. У таких пошукових системах, як Google, Bing, Yahoo, є боти, які збирають дані з веб-сайтів та індексують їх на своїх пошукових сторінках. Дані також можна отримати за допомогою API, що є, мабуть, одним із найкращих способів отримання даних з Інтернету. Відомі веб-сайти, такі як Facebook, Google, Amazon, надають користувачам добре структуровані API для взаємодії з даними, але ви не побачите цих API всюди.

Наприклад, якщо ви хочете регулярно отримувати оновлення своїх улюблених продуктів для пропозицій зі знижками або хочете автоматизувати процес завантаження епізодів улюбленого сезону по одному, а веб-сайт не має жодного 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”, знайдіть це у вихідному коді. Він укладений між тегами заголовка, а його код -



class = "category-1561"> Програмування BASH


title = "Приклади 74 Bash-операторів"> 74 Bash-оператори
Приклади


Той самий код повторюється знову і знову зі зміною лише заголовків статей та посилань. Наступна стаття містить наступний HTML-код



class = "category-1343"> Ubuntu
Лак


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 '

Тепер, коли ми маємо список усіх 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”.

Як встановити League of Legends на Ubuntu 14.04
Якщо ви шанувальник League of Legends, то це можливість для вас тестувати League of Legends. Зверніть увагу, що LOL підтримується на PlayOnLinux, якщо...
Встановіть останню стратегічну гру OpenRA на Ubuntu Linux
OpenRA - це ігровий движок Libre / Free Real Time Strategy, який відтворює ранні ігри Вествуда, такі як класичний Command & Conquer: Red Alert. Пошире...
Встановіть найновіший емулятор Dolphin для Gamecube & Wii на Linux
Емулятор Dolphin дозволяє грати у вибрані вами ігри Gamecube та Wii на персональних комп’ютерах Linux (ПК). Будучи вільно доступним і відкритим ігров...