Рубрики
Без рубрики

Как соскребать сайты, используя Python

Автор оригинала: FreeCodeCapm Team.

Деваньшу Джайн

Это то время года, когда воздух наполнен хлопающими и ура 4 и 6 пробежек во время Индийская премьер-лига Турнир Cricket T20, за которым следуют Кубок мира МКК по крикету в Англии. И как мы можем забыть результаты выборов в мире крупнейшей в мире демократической стране, Индии, которая выйдет в ближайшие несколько недель?

Чтобы оставаться в курсе того, кто будет получать название IPL в этом году, или какую страну собирается получить Кубок мира МУС в 2019 году или как будущее страны будет выглядеть в течение следующих 5 лет, мы постоянно должны быть приклеены к Интернету.

Но если вы похожи на меня и не можете сэкономить много времени в Интернете, но придерживайтесь сильного желания оставаться в курсе всех этих титулов, тогда эта статья для вас. Так что, не тратая в любое время, давайте начнем!

Есть два способа, с которыми мы можем получить доступ к обновленной информации. Один из способов проходит через API, предоставленные этими медиа-сайтами, а наоборот – это через соскреб веб/контента.

API Way слишком прост, и, вероятно, лучший способ получить обновленную информацию – это позвонить в связанный интерфейс программирования. Но, к сожалению, не все сайты предоставляют общедоступные API. Таким образом, на другой путь ушел для нас, – это Web Scrape.

Веб-соскоб

Веб-соскоб – это техника для извлечения информации с веб-сайтов. Эта техника в основном сосредотачивается на преобразовании неструктурированных данных (HTML-формата) в Интернете в структурированные данные (база данных или электронная таблица). Веб-соскоб может включать доступ к сети, непосредственно с помощью HTTP, или через веб-браузер.

В этой статье мы будем использовать Python, чтобы создать бот для соскабливания контента с веб-сайтов.

Процесс рабочего процесса

  • Получите URL страницы, из которой мы хотим извлечь/царапать данные
  • Копировать/загрузка HTML содержимое страницы
  • Разбирайте содержимое HTML и получите необходимые данные

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

Пакеты

Для анализа HTML-контента и получения требуемых данных мы используем Красивый суп библиотека. Это удивительный пакет Python для разборки документов HTML и XML. Проверить это здесь Отказ

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

Нырять прямо в код

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

# importing librariesfrom selenium import webdriverfrom bs4 import BeautifulSoup

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

# chrome driver pathchromedriver = '/usr/local/bin/chromedriver'options = webdriver.ChromeOptions()options.add_argument('headless')  # for opening headless browser
browser = webdriver.Chrome(executable_path=chromedriver, chrome_options=options)

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

# Navigating to the login pagebrowser.get('http://playsports365.com/default.aspx')
#Finding the tags by nameemail = 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, нажав кнопку «Отправить», чтобы ввести наш контент в структуре страницы.

# appending login credentialsemail.send_keys('********')password.send_keys('*******')
# clicking submit buttonlogin.click()

После того, как логин успешен, перейдите на нужную страницу и получите страницу HTML Content

# After successful login, navigating to Open Bets Pagebrowser.get('http://playsports365.com/wager/OpenBets.aspx')
# Getting HTML content and parsing itrequiredHtml = browser.page_source

Теперь мы получили HTML-контент и единственное, что осталось, это анализ этого контента. Мы разберем контент, используя красивый суп и библиотеки HTML5Lib. HTML5LIB Это пакет Python, который реализует алгоритм анализа HTML5, который сильно влияет текущие браузеры. Как только мы получим нормализованную структуру проанализированного контента, мы можем найти наши данные, присутствующие в любой дочерней теге HTML-тега. Наши данные присутствуют в теге таблицы, и именно поэтому мы ищем этого тега.

soup = BeautifulSoup(requiredHtml, 'html5lib')table = soup.findChildren('table')my_table = table[0]

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

# fetching tags and printing valuesrows = my_table.findChildren(['th', 'tr'])for row in rows:    cells = row.findChildren('td')    for cell in cells:        value = cell.text        print (value)

Для выполнения вышеуказанной программы установите селен, красивый суп и библиотеки HTML5LIB, используя Пип Отказ После установки библиотек, набрав #python <программа NA Меня> будет напечатать значения к консоли.

Таким образом, мы можем соскресать и найти данные с любого веб-сайта.

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

Кроме того, мы также можем иметь результаты, отображаемые прямо на нашем экране вместо консоли, печатая результаты на вкладке «Уведомление», на которой появляется на рабочий стол после определенного интервала времени. Мы даже можем поделиться этими значениями на клиент обмена сообщениями. У Python имеет богатые библиотеки, которые могут помочь нам со всем этим.

Если вы хотите, чтобы я объяснил, как настроить работу CRON и получить уведомления, чтобы появиться на рабочем столе, не стесняйтесь спрашивать меня в разделе «Комментарий».

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