Вы находитесь на странице: 1из 1

Новое Лучшее Вакансии Мероприятия + LIVE >

Включить в подписку

matyushkin
13 декабря 2019 в 17:44

Спасибо за то, что написали


комментарий! На Ubuntu не
столкнулся с про...

Голосовой DeepFake, или Как


Аренда выделенного сервера в работает технология клонирования
Selectel на базе процессоров Intel® голоса
Xeon® Scalable 2-го поколения
Библиотека программиста 28 мая 2019
poisk123
Python 7 понравилось 0 комментариев в закладки 49159 ЗАКАЗАТЬ 13 декабря 2019 в 16:34

1.Короче, если ставить в


виртуальное окружение через pip3
ТЕСТЫ
Осваиваем парсинг сайта: короткий туториал на Python install -r r...

Голосовой DeepFake, или Как


Постоянно в Интернете, ничего не успеваете? Парсинг сайта спешит на помощь! Разбираемся, как
работает технология клонирования
автоматизировать получение нужной информации.
голоса

matyushkin
13 декабря 2019 в 10:45

Тест на общие знания для C# BUG Вы про администратора или


разработчика пользователей?
Наш сайт использует файлы cookie для вашего максимального удобства. Пользуясь сайтом, вы даете свое согласие с условиями
Согласен
пользования cookie Безопасность прежде всего: как
C# 4 0
защитить Linux на сервере VPS

+ Еще 6 тестов

КОМПАНИИ

MoscowPython

Чтобы быть в курсе, кто получит кубок мира в 2019 году, или как будет выглядеть будущее страны
в ближайшие 5 лет, приходится постоянно зависать в Интернете. Но если вы не хотите тратить MyTona
много времени на Интернет и жаждете оставаться в курсе всех событий, то эта статья для вас.
Итак, не теряя времени, начнём!
1cloud: Облачные технологии

Доступ к новейшей информации получаем двумя способами. Первый – с помощью API, который
предоставляют медиа-сайты, а второй – с помощью парсинга сайтов (Web Scraping). Библиотека программиста

Использование API предельно просто, и, вероятно, лучший способ получения обновлённой


информации – вызвать соответствующий программный интерфейс. Но, к сожалению, не все сайты + Еще 8 компаний
предоставляют общедоступные API. Таким образом, остаётся другой путь – парсинг сайтов.

Парсинг сайта

Это метод извлечения информации с веб-сайтов. Эта методика преимущественно фокусируется


на преобразовании неструктурированных данных – в формате HTML – в Интернете в
структурированные данные: базы данных или электронные таблицы. Парсинг сайта включает в
себя доступ к Интернету напрямую через HTTP или через веб-браузер. В этой статье будем
использовать Python, чтобы создать бот для получения контента.

Последовательность действий

Получить URL страницы, с которой хотим извлечь данные.

Скопировать или загрузить HTML-содержимое страницы.

Распарсить HTML-содержимое и получить необходимые данные.

Эта последовательность помогает пройти по URL-адресу нужной страницы, получить HTML-


содержимое и проанализировать необходимые данные. Но иногда требуется сперва войти на
сайт, а затем перейти по конкретному адресу, чтобы получить данные. В этом случае добавляется
ещё один шаг для входа на сайт.

Пакеты

Для анализа HTML-содержимого и получения необходимых данных используется библиотека


Beautiful Soup. Это удивительный пакет Python для парсинга документов формата HTML и XML.

Для входа на веб-сайт, перехода к нужному URL-адресу в рамках одного сеанса и загрузки
HTML-содержимого будем использовать библиотеку Selenium. Selenium Python помогает при
нажатии на кнопки, вводе контента и других манипуляциях.

Погружение в код

Сначала импортируем библиотеки, которые будем использовать:

# импорт библиотек
from selenium import webdriver
from bs4 import BeautifulSoup

Затем укажем драйверу браузера путь к Selenium, чтобы запустить наш веб-браузер (Google
Chrome). И если не хотим, чтобы наш бот отображал графический интерфейс браузера, добавим
опцию headless в Selenium.

Браузеры без графического интерфейса (headless) предоставляют автоматизированное


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

# путь к драйверу chrome


chromedriver = '/usr/local/bin/chromedriver'
options = webdriver.ChromeOptions()
options.add_argument('headless') # для открытия headless-браузера
browser = webdriver.Chrome(executable_path=chromedriver, chrome_options=options)

После настройки среды путём определения браузера и установки библиотек приступаем к HTML.
Перейдём на страницу входа и найдём идентификатор, класс или имя полей для ввода адреса
электронной почты, пароля и кнопки отправки, чтобы ввести данные в структуру страницы.

# Переход на страницу входа


browser.get('http://playsports365.com/default.aspx')
# Поиск тегов по имени
email = browser.find_element_by_name('ctl00$MainContent$ctlLogin$_UserName')
password = browser.find_element_by_name('ctl00$MainContent$ctlLogin$_Password')
login = browser.find_element_by_name('ctl00$MainContent$ctlLogin$BtnSubmit')

Затем отправим учётные данные в эти HTML-теги, нажав кнопку «Отправить», чтобы ввести
информацию в структуру страницы.

# добавление учётных данных для входа


email.send_keys('********')
password.send_keys('*******')
# нажатие на кнопку отправки
login.click()

После успешного входа в систему перейдём на нужную страницу и получим HTML-содержимое


страницы.

# После успешного входа в систему переходим на страницу «OpenBets»


browser.get('http://playsports365.com/wager/OpenBets.aspx')
# Получение HTML-содержимого
requiredHtml = browser.page_source

Когда получили HTML-содержимое, единственное, что остаётся, – парсинг. Распарсим содержимое


с помощью библиотек Beautiful Soup и html5lib.

html5lib – это пакет Python, который реализует алгоритм парсинга HTML5, на который сильно
влияют современные браузеры. Как только получили нормализованную структуру содержимого,
становится доступным поиск данных в любом дочернем элементе тега html . Искомые данные
присутствуют в теге table , поэтому ищем этот тег.

soup = BeautifulSoup(requiredHtml, 'html5lib')


table = soup.findChildren('table')
my_table = table[0]

Один раз находим родительский тег, а затем рекурсивно проходим по дочерним элементам и
печатаем значения.

# получение тегов и печать значений


rows = my_table.findChildren(['th', 'tr'])
for row in rows:
cells = row.findChildren('td')
for cell in cells:
value = cell.text
print (value)

Чтобы выполнить указанную программу, установите библиотеки Selenium, Beautiful Soup и


html5lib с помощью pip. После установки библиотек команда #python <program name>
выведет значения в консоль.

Так парсятся данные с любого сайта.

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

Используете парсинг сайта?

Для вывода результатов необязательно ограничиваться консолью, правда?

Как вы предпочитаете отображать данные подобных программ: выводить на


панель уведомлений, отправлять на почту или иначе? Делитесь полезными
находками :)

Надеемся, вам понравилась статья.

Оригинал

7 понравилось 0 комментариев в закладки 49159

Python

Комментарии 0

Оставьте свой комментарий

Отправить

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

Библиотека программиста 04 октября 2018

Помнить все: делимся лучшей шпаргалкой по Python


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

Python 3 0 5 184484

Библиотека программиста 28 июня 2018

3 самых важных сферы применения Python: возможности


языка
Существует множество областей применения Python, но в некоторых он особенно хорош.
Разбираемся, что же можно делать на этом ЯП.

Python 1 1 0 149762

Библиотека программиста 13 февраля 2017

Программирование на Python: от новичка до


профессионала
Пошаговая инструкция для всех, кто хочет изучить программирование на Python (или
программирование вообще), но не знает, куда сделать первый шаг.

Python 3 1 8 342438

О проекте Реклама Пользовательское соглашение Политика конфиденциальности Push-уведомления

Контакты

© 2019, Proglib. При копировании материала ссылка на источник обязательна.

Вам также может понравиться