Автор оригинала: Shubham Sayon.
Резюме: Веб-соскоб – это процесс извлечения данных из Интернета. Это также известно как Урожай веб или Добыча веб-данных. Python позволяет нам выполнять веб-соскоб, используя автоматизированный техника. Beautifulsoup Библиотека Python, используемая для анализа данных (структурированных данных) из документов HTML и XML.
Интернет – это огромное богатство данных. Независимо от того, являетесь ли вы ученым данных, деловым человеком, студентом или профессионалом, все вы сбрасывали данные из Интернета. Да все верно! Я повторяю – вы уже прорастают данные, если вы использовали Интернет для вашей работы или даже развлечений. Так что же означает Web Scraping? Это простой акт извлечения данных с веб-сайта. Даже копирование и копирование данных из Интернета – это веб-соскоб. Поэтому, если вы загрузили свою любимую песню из Интернета или скопировали вашу любимую цитату из Интернета, это означает, что вы уже сбрасывали данные из Интернета.
В этой статье мы собираемся исследовать некоторые из наиболее часто задаваемых вопросов, касающихся Scraping Web, и тогда мы пройдем весь процесс создания веб-скребка и визуализации того, как мы можем автоматизировать задачу Scraping Scraping! Поэтому без дальнейшей задержки давайте начнем наше путешествие с помощью веб-соска.
Что такое Scraping Web?
Веб-соскоб – это процесс извлечения данных из Интернета. Это также известно как Урожай веб или Добыча веб-данных. Python позволяет нам выполнять веб-соскоб, используя автоматизированный техника.
Некоторые из наиболее часто используемых библиотек в Python для веб-соскоба:
- То Запросы библиотека.
- То Красивый суп 4 библиотека.
- Селен .
- Соскребация .
В этой статье мы собираемся исследовать Beautifulsoup
Библиотека и Запросы
Библиотека для царапания данных с сайта.
Почему мы соскребеем данные из Интернета?
Веб-соскоб, если выполняется с использованием правильных рекомендаций, может оказаться чрезвычайно полезным и может сделать нашу жизнь легко, автоматизируя повседневные задачи, которые мы неоднократно выполняем через Интернет.
- Если вы являетесь аналитиком данных, и вам необходимо извлечь данные из Интернета в день на сутки, то создание автоматизированного веб-сканера – это решение для уменьшения вашего бремени извлечения данных вручную каждый день.
- Вы можете использовать Web Scrappers для извлечения информации о продуктах из интернет-магазинов и сравнить цены на товары и технические характеристики.
- Вы можете использовать веб-соскоб для контент-маркетинга и акциям социальных сетей.
- Как студент или исследователь, вы можете использовать веб-соскоб для извлечения данных для вашего исследования/проекта из Интернета.
Инострая линия: «Автоматизированный веб-соскобщик позволяет работать умным!»
Веб-соскоб законный?
Теперь это очень важный вопрос, но к сожалению, для этого нет конкретного ответа. Есть несколько веб-сайтов, которые не против, если вы соскрестите контент с их веб-страницы, пока есть другие, которые запрещают сочетание контента. Поэтому абсолютно необходимо, чтобы вы следите за руководящими принципами и не нарушаете политику веб-сайта во время сочетания контента от их веб-страницы.
Давайте посмотрим на несколько важных руководящих принципов, которые мы должны иметь в виду, когда соскоб контент через Интернет.
Помнить:
Прежде чем мы погрузимся в Web Scraping, важно, чтобы мы понимали, как работает веб-сайты, и что такое язык разметки гипертекста, потому что это то, что мы собираемся извлечь наши данные. Следовательно, давайте провести краткое обсуждение по HTTP-запрос на ответ модель и HTML.
Модель HTTP-запроса/ответа
Весь принцип работы о том, как веб-работы могут быть довольно сложными, но будем пытаться понять вещи на простом уровне, который дал бы нам представление о том, как мы собираемся приблизиться к Scraping.
Простые слова , HTTP-запрос/ответ – это модель связи, используемая HTTP и другими расширенными протоколами, которые основаны на HTTP, в соответствии с которым клиент (веб-браузер) отправляет запрос на ресурс или услугу на сервер, и сервер отправляет ответ Соответствует ресурсу, если запрос успешно обработан, в противном случае сервер отвечает с сообщением об ошибке в случае, если он не может обработать запрос.
Есть многочисленные методы HTTP, используемые для взаимодействия с веб-сервером; Но наиболее часто используемые являются получить и Почта.
- Получить : Используется для запроса данных из определенного ресурса на веб-сервере.
- Пост : Используется для отправки данных на сервер для создания/обновления ресурса.
Другие методы HTTP:
- ПОЛОЖИЛ
- ГОЛОВА
- УДАЛЯТЬ
- ПЛАСТЫРЬ
- ПАРАМЕТРЫ
Примечание: Чтобы соскрести данные с сайта, мы отправим запрос на веб-сервер, используя Запросы
Библиотека вместе с Получить ()
метод.
HTML – язык разметки гипертекста
Хотя HTML является темой обсуждения само по себе, и выходит за рамки этой статьи, однако вы должны знать о базовой структуре HTML. Не волнуйтесь, вам не нужно учиться, как разработать веб-страницу с помощью HTML и CSS Но вы должны знать о некоторых из ключевых элементов/тегов, используемых при создании веб-страницы с помощью HTML.
💡 HTML имеет иерархический /Структура дерева Отказ Это свойство позволяет нам получать доступ к элементам HTML-документа при соскребении веб-страницы на основе их родительских и детей. Для того чтобы визуализировать структуру дерева HTML, давайте посмотрим на изображение, приведенное ниже.
У меня есть перечисленная пара ссылок, если вы хотите дальше исследовать и узнать о том, как работает HTML:
Создание веб-скребка
Теперь начните создавать наш веб-скребок. Сайт, который мы собираемся в Scrape – это вакансионская панель, которая перечисляет самые последние вакансии Python. В этом прохождении мы будем соскабливать:
- Название работы
- Расположение работы
- Имя организации
Сайт, который будет соскок: Бесплатная доска работы Python
Шаг 1: Навигация и проверьте веб-страницу/веб-страницу
Первая и прежде всего задача при сострании данных из любой веб-страницы – открыть веб-страницу, из которой мы выскабливаем данные и проверяем веб-сайт, используя инструменты разработчика. Вы также можете просмотреть источник страницы.
Навигаться по инструментам разработчика:
- Щелкните правой кнопкой мыши на веб-странице.
- Выберите Проверять Отказ
Примечание: Import Element – это инструмент разработчика, реализованный в большинстве веб-браузеров, которые включают Google Chrome, Firefox, Safari и Internet Explorer. Это позволяет нам просматривать и редактировать исходный код HTML и CSS на бэкэнде. Изменения, внесенные в код, отражены в режиме реального времени в вашем окне браузера. Лучшая часть – это вам не нужно беспокоиться о нарушении страницы, когда вы играете с кодом, потому что изменения, сделанные вами, только вступит в силу только на ваш сеанс и отражаются только на вашем экране. Другими словами, осмотр элемент предоставляет нам своего рода «что если» опыт, не влияя на содержимое для любого другого пользователя.
Для просмотра источника страницы:
- Щелкните правой кнопкой мыши на веб-странице.
- Выберите Просмотр источника страницы
Следовательно, изначально нам нужно сверлить исходный код HTML и идентифицировать элементы, на которые мы должны сосредоточиться на сосредоточении содержимого. Таким образом, приведенное ниже изображение обозначает разделы, на которые нам нужно работать при сострании.
Шаг 2: Создайте пользовательский агент
Пользовательский агент является клиентом (обычно веб-браузером), который используется для отправки запросов на веб-сервере от имени пользователя. Получайте автоматические запросы снова и снова с того же машины/системы, веб-сервер может догадаться, что запрос автоматизирован и отправляется ботом. Таким образом, он блокирует запрос. Поэтому мы можем использовать пользовательский агент для поддельного посещения браузера к определенной веб-странице, который делает сервер полагать, что запрос был из оригинального пользователя, а не бота.
Синтаксис:
# create User-Agent (optional) headers = {"User-Agent": "Mozilla/5.0 (CrKey armv7l 1.5.16041) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/31.0.1650.0 Safari/537.36"} # passing the user agent as a parameter along with the get() Request response = requests.get("http://pythonjobs.github.io/", headers=headers)
Шаг 3: Импортируйте библиотеку запросов
✨ Библиотека запросов
Библиотека запросов позволяет нам отправить получить
Запрос на веб-сервер.
Вот как это работает:
- Импортируйте библиотеку Python
Запросы
Это обрабатывает детали запроса веб-сайтов с сервера в формате простого в процессе. - Используйте
requests.get (...)
Способ доступа к веб-сайту и пройти URL'http://pythonjobs.github.io/'
в качестве аргумента, так что функция знает, какое место для доступа. - Доступ к фактическому телу получить
Запрос
(Возвращаемое значение – это объект запроса, который также содержит некоторую полезную мета-информацию, такую как тип файла и т. Д.) И хранить его в переменной с помощью.content
атрибут.
Синтаксис:
import requests # create User-Agent (optional) headers = {"User-Agent": "Mozilla/5.0 (CrKey armv7l 1.5.16041) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/31.0.1650.0 Safari/537.36"} # get() Request response = requests.get("http://pythonjobs.github.io/", headers=headers) # Store the webpage contents webpage = response.content
✨ Проверка кода состояния
После обработки HTTP-запроса обрабатывается сервером, он отправляет ответ, который содержит код состояния Отказ Код состояния указывает, был ли конкретный ответ был успешно обработан или нет.
Есть основные 5 различных категорий кодов статуса:
Синтаксис:
print(response.status_code)
Шаг 4: Parse HTML с использованием библиотеки BeautifulSoup
✨ Библиотека BeautifulSoup
BeautifulSoup Библиотека Python, используемая для анализа данных (структурированных данных) из документов HTML и XML.
- Импортируйте библиотеку BeautifulSoup.
- Создайте объект BeautifulSoup. Первый параметр представляет данные HTML, а второй параметр – анализатор.
Синтаксис:
import requests from bs4 import BeautifulSoup # create User-Agent (optional) headers = {"User-Agent": "Mozilla/5.0 (CrKey armv7l 1.5.16041) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/31.0.1650.0 Safari/537.36"} # get() Request response = requests.get("http://pythonjobs.github.io/", headers=headers) # Store the webpage contents webpage = response.content # Check Status Code (Optional) # print(response.status_code) # Create a BeautifulSoup object out of the webpage content soup = BeautifulSoup(webpage, "html.parser")
Как только мы создали объект Beautifulsoup, нам нужно использовать различные варианты, предоставляемые нам Beautifulsoup
Библиотека для навигации и найдя элементов в HTML-документе и соскребация данных из него.
💡 Внимание:
Если вы хотите понять, как ориентироваться через HTML-документ, используя компоненты Beautifulsoup
Библиотека, пожалуйста, обратитесь к нашему Учебное пособие Чтобы узнать о различных вариантах, предоставляемых Beautifulsoup
разбирать документ HTML.
Давайте посмотрим на код, а затем мы поймем принцип работы/логику позади этого.
# The logic for job in soup.find_all('section', class_='job_list'): title = [a for a in job.find_all('h1')] for n, tag in enumerate(job.find_all('div', class_='job')): company_element = [x for x in tag.find_all('span', class_='info')] print("Job Title: ", title[n].text.strip()) print("Location: ", company_element[0].text.strip()) print("Company: ", company_element[3].text.strip()) print()
- Во внешней петли I.E.
Для работы в SUP.Find_all («Раздел»,)
, мы находим родительский элемент, который в этом случае является тегом раздела, имеющего класс HTML с именемработа
а потом повторить это. -
Название
Переменная представляет собой список пометков и используется для хранения заголовков заданий. Другими словами,job.find_all ('div',)
Функция используется для поиска всехDiv
Теги, имеющие имя классаработа
а затем сохранить данные в спискеНазвание
Отказ Внутренняя петля I.E.
Для n, тег в перечислении (job.find_all ('div',))
имеет пару функций:- Ищите все
Div
Элементы с классомИнформация
Отказ - Держите счет каждой итерации с помощью
перечислять
функция.
- Ищите все
- Внутри внутренней петли, понимание списка
Company_Element
хранит все содержимое, которые находятся в пределахпромежуток
Тег с классомИнформация
Отказ - Наконец, с помощью счетчика
N
Функции перечисления, мы извлекаем элементы заголовка тега (который хранит заголовки заданий) с помощью их индекса. Расположение и названия компаний извлечены из 0 и 3-го индекса спискаCompany_Element
Отказ
Окончательное решение
Теперь давайте консолидируем все шаги для достижения окончательного решения/кода, как показано ниже:
import requests from bs4 import BeautifulSoup # create User-Agent (optional) headers = {"User-Agent": "Mozilla/5.0 (CrKey armv7l 1.5.16041) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/31.0.1650.0 Safari/537.36"} # get() Request response = requests.get("http://pythonjobs.github.io/", headers=headers) # Store the webpage contents webpage = response.content # Check Status Code (Optional) # print(response.status_code) # Create a BeautifulSoup object out of the webpage content soup = BeautifulSoup(webpage, "html.parser") # The logic for job in soup.find_all('section', class_='job_list'): title = [a for a in job.find_all('h1')] for n, tag in enumerate(job.find_all('div', class_='job')): company_element = [x for x in tag.find_all('span', class_='info')] print("Job Title: ", title[n].text.strip()) print("Location: ", company_element[0].text.strip()) print("Company: ", company_element[3].text.strip()) print()
Выход:
Job Title: Software Engineer (Data Operations) Location: Sydney, Australia / Remote Company: Autumn Compass Job Title: Developer / Engineer Location: Maryland / DC Metro Area Company: National Institutes of Health contracting company. Job Title: Senior Backend Developer (Python/Django) Location: Vienna, Austria Company: Bambus.io
Ура! Мы успешно создали наш первый скрипт веб-скребка.
Примеры
Как говорится – «практика делает человека идеальным!» Поэтому, пожалуйста, посмотрите на следующую статью, которая перечисляет процесс Scraping Web с помощью пяти примеров. Нажмите на кнопку/ссылку, приведенную ниже, чтобы посмотреть на эти примеры и практиковать их, чтобы освоить навык веб-соскабливания с использованием библиотеки Python BuildsUous.
Заключение
Я надеюсь, что после прочтения всей статьи вы можете с легкостью просматривать данные с веб-страниц! Пожалуйста, прочитайте опорные статьи, чтобы получить более сильный захват на упомянутых понятиях.
Пожалуйста, Подписаться и Оставайтесь настроиться Для более интересных статей в будущем.
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.
Вы можете связаться со мной @:
Оригинал: “https://blog.finxter.com/web-scraping-with-beautifulsoup-in-python/”