Веб-парсинг

Веб-парсинг с использованием Python

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

Например, если вы хотите получать регулярные обновления ваших любимых продуктов для предложений скидок или вы хотите автоматизировать процесс загрузки эпизодов вашего любимого сезона один за другим, а на веб-сайте нет API для этого, тогда единственный выбор ты остаешься с веб-парсингом.Веб-скрапинг может быть незаконным на некоторых веб-сайтах, в зависимости от того, позволяет ли это веб-сайт. На веб-сайтах используются «роботы.txt »для явного определения URL-адресов, удаление которых запрещено. Вы можете проверить, позволяет ли это веб-сайт, добавив «robots.txt »с доменным именем веб-сайта. Например, https: // www.Google.com / robots.текст

В этой статье мы будем использовать Python для парсинга, потому что его очень легко настроить и использовать. Он имеет множество встроенных и сторонних библиотек, которые можно использовать для сбора и систематизации данных. Мы будем использовать две библиотеки Python «urllib» для получения веб-страницы и «BeautifulSoup» для анализа веб-страницы для применения операций программирования.

Как работает веб-парсинг?

Отправляем запрос на веб-страницу, откуда вы хотите очистить данные. Сайт ответит на запрос HTML-содержимым страницы. Затем мы можем проанализировать эту веб-страницу в BeautifulSoup для дальнейшей обработки. Чтобы получить веб-страницу, мы будем использовать библиотеку urllib в Python.

Urllib загрузит содержимое веб-страницы в формате HTML. Мы не можем применять строковые операции к этой HTML-странице для извлечения содержимого и дальнейшей обработки. Мы будем использовать библиотеку Python BeautifulSoup, которая будет анализировать контент и извлекать интересные данные.

Парсинг статей из Linuxhint.ком

Теперь, когда у нас есть представление о том, как работает парсинг веб-страниц, давайте попрактикуемся. Мы попробуем очистить заголовки статей и ссылки из Linuxhint.ком. Так что откройте https: // linuxhint.com / в вашем браузере.

Теперь нажмите CRTL + U, чтобы просмотреть исходный HTML-код веб-страницы.

Скопируйте исходный код и перейдите по адресу https: // htmlformatter.com / для уточнения кода. После предварительной настройки кода его легко изучить и найти интересную информацию.

Теперь снова скопируйте отформатированный код и вставьте его в свой любимый текстовый редактор, например, атом, возвышенный текст и т. Д. Теперь поскребем интересную информацию с помощью Python. Введите следующее

// Устанавливаем красивую суповую библиотеку, приходит urllib
предустановлен в Python
ubuntu @ ubuntu: ~ $ sudo pip3 установить bs4
убунту @ убунту: ~ $ 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
>>> client = urllib.запрос.urlopen (my_url)
// Сохраняем HTML-страницу в переменной «html_page»
>>> html_page = клиент.читать()
// Закрываем URL-соединение после загрузки веб-страницы
>>> клиент.Закрыть()
// анализируем HTML-страницу в BeautifulSoup для очистки
>>> page_soup = BeautifulSoup (html_page, "html.парсер ")

Теперь давайте посмотрим на исходный код HTML, который мы только что скопировали и вставили, чтобы найти то, что нас интересует.

Вы можете видеть, что первая статья, указанная на Linuxhint.com называется «74 примера операторов Bash», его можно найти в исходном коде. Он заключен между тегами заголовка, а его код



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


title = "74 примера операторов Bash"> 74 оператора Bash
Примеры


Один и тот же код повторяется снова и снова с изменением только заголовков статей и ссылок. В следующей статье есть следующий HTML-код



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


title = "Как настроить кеш Varnish в Ubuntu 18.04 ">
Как настроить кеш Varnish в Ubuntu 18.04


Вы можете видеть, что все статьи, включая эти две, заключены в один и тот же "

»И используйте тот же класс« entry-title ». Мы можем использовать функцию «findAll» в библиотеке Beautiful Soup, чтобы найти и перечислить все «

»Имеющий класс« запись-заглавие ». Введите в консоли Python следующее

// Эта команда найдет все «

»Элементы тега, имеющие класс с именем
«Запись-заголовок». Результат будет сохранен в массиве.
>>> article = page_soup.findAll ("h2" ,
"class": "entry-title")
// Количество статей, найденных на главной странице Linuxhint.ком
>>> len (статьи)
102
// Сначала извлечено «

»Элемент тега, содержащий название статьи и ссылку
>>> статьи [0]


title = "74 примера операторов Bash">
74 Примеры операторов Bash


// Извлеченная секунда “

»Элемент тега, содержащий название статьи и ссылку
>>> статьи [1]


title = "Как настроить кеш Varnish в Ubuntu 18.04 ">
Как настроить кеш Varnish в Ubuntu 18.04


// Отображение только текста в тегах HTML с использованием текстовой функции
>>> статьи [1].текст
'Как настроить кеш Varnish в Ubuntu 18.04 '

Теперь, когда у нас есть список всех 102 HTML «

»Элементы тега, содержащие ссылку на статью и заголовок статьи. Мы можем извлекать как ссылки на статьи, так и заголовки. Чтобы извлечь ссылки из «», Мы можем использовать следующий код

// Следующий код извлечет ссылку из первого

элемент тега
>>> по ссылке в статьях [0].find_all ('a', href = True):
… Печать (ссылка ['href'])

https: // linuxhint.ru / bash_operator_examples /

Теперь мы можем написать цикл for, который проходит через каждые «

»В списке« статей »и извлеките ссылку на статью и заголовок.

>>> для i в диапазоне (0,10):
… Печать (статьи [i].текст)
… Для ссылки в статьях [i].find_all ('a', href = True):
… Печать (ссылка ['href'] + "\ n")

74 Примеры операторов Bash
https: // linuxhint.ru / bash_operator_examples /
Как настроить кеш Varnish в Ubuntu 18.04
https: // linuxhint.ru / varnish_cache_ubuntu_1804 /
PineTime: умные часы, совместимые с Linux
https: // linuxhint.com / pinetime_linux_smartwatch /
10 лучших дешевых ноутбуков с Linux, которые стоит купить с ограниченным бюджетом
https: // linuxhint.ru / 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.ru / bash_operator_examples /
… Отрезать…

Точно так же вы сохраняете эти результаты в файл JSON или CSV.

Заключение

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

5 лучших аркад для Linux
В настоящее время компьютеры - это серьезные машины, используемые для игр. Если вы не можете получить новый рекорд, вы поймете, о чем я. В этом посте ...
Битва за Веснот 1.13.6 Выпущена разработка
Битва за Веснот 1.13.6, выпущенная в прошлом месяце, является шестой разработкой в ​​1.13.x и содержит ряд улучшений, в первую очередь пользовательско...
Как установить League Of Legends на Ubuntu 14.04
Если вы поклонник League of Legends, то это возможность для вас протестировать League of Legends. Обратите внимание, что LOL поддерживается в PlayOnLi...