Понимание Web Scrapping, его необходимости и того, как его создать.

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

[Q]. Что это?
[A]. Данные.

Какое отношение ИИ и машинное обучение имеют к веб-парсингу?

Ядром всех систем AI, ML и DL являются данные. Жизненный цикл MLE или Data Scientist включает следующие шаги.

1. Понимание бизнес-целей.
2. Сбор данных
3. Визуализация данных
4. Предварительная обработка данных
5. Разработка функций
6. Построение модели и т. Д.

Независимо от того, насколько хорошо кто-то разбирается в математике, статистике, алгоритмах и т. Д., Не имея набора данных, невозможно разработать систему машинного обучения или глубокого обучения. Итак, единственное - в данных. Хотя у нас всегда есть данные для работы, поэтому нам не нужно беспокоиться о получении данных.

[Q]. Что, если у нас нет данных?
[A]. Мы можем удалить данные из соответствующего источника и продолжить.

Что такое Web Scrapping?

Веб-парсинг - это процесс сбора информации из Интернета. Даже загрузка изображений с веб-сайта или копирование содержимого из Википедии - это своего рода списание, которое выполняется вручную. Однако термин «парсинг веб-страниц» используется, когда мы автоматизируем этот процесс путем написания кода или скриптов.

Почему именно веб-скрапинг?

Для этого может быть несколько причин.
1. Предположим, у меня есть акция с названием «XYZ». Я хочу быть в курсе его стоимости каждый день, но также не хочу посещать веб-сайт фондовой биржи и искать его вручную. Так что в этом случае может пригодиться веб-скребок.

2. Аналогично приведенному выше примеру. Предположим, я ищу работу по машинному обучению в Мумбаи. И иметь учетную запись на Naukri.com. Я не люблю заходить на сайт, листать и видеть нерелевантные сообщения. В этом случае у меня может быть веб-скребок, чтобы быть в курсе актуальных для меня открытий.

3. При работе с любой проблемой ML или DL у нас уже есть данные. Но получение наших собственных данных и работа над ними повышает ценность вашего портфолио, поскольку показывает, что человек может работать с нуля, создавая свой собственный набор данных.

Необходимые условия для парсинга веб-страниц
1. Основы HTML (https://www.w3schools.com/html/)
2. Основы Python
3. Библиотеки Python (urllib, запросы, BeautifulSoup)

Правила очистки

  1. Перед очисткой сайта следует ознакомиться с Условиями использования. Полученные данные не должны использоваться в коммерческих целях.
  2. При отмене страниц не бомбардируйте страницу множеством запросов, блокируя себя и приводя к сбою их веб-сайта. Один запрос в секунду - это нормально.

Доступны различные типы веб-страниц:
1. Статические веб-страницы.
2. Динамические веб-страницы.
3. Умные веб-страницы (я их так называю).

  1. Статическая веб-страница
    На статической веб-странице запрос отправляется на веб-сервер через Интернет, и в качестве ответа мы получаем обратно HTML-страницу. Затем эта HTML-страница загружается в наш веб-браузер. Это самый простой тип веб-страниц, которые можно выбросить.

Получить веб-страницу

#Import Libraries
import urllib.request
from bs4 import BeautifulSoup
#Specify the URL
web_page = 'https://www.naukri.com/machine-learning-jobs-in-mumbai'

Значение URL
Базовый URL: https://www.naukri.com
Поисковый запрос: машина -обучение-работа-в-Мумбаи

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

Используя инструменты разработчика в вашем браузере, вы можете проверить данные, которые хотите удалить.

Используйте Инструменты разработчика, чтобы получить указатель необходимых данных

Изучив название должности, мы узнали ее точное положение. Теперь, используя эти значения, мы можем отказаться от должности.

Прочтите веб-страницу

#Reading the webpage content
with urllib.request.urlopen(web_page) as url:
    s = url.read()

Анализируйте веб-страницу в BeautifulSoup

# Soup variable have the HTML code we can work 
withjob = job_role.text.strip()
soup = BeautifulSoup(web_page, ‘html.parser’)

Получение должности

#Will look for the class which has its value “jd-header-title” in h1 heading
job_role = soup.find("h1", attrs={"class"="jd-header-title"})
# Will remove extra spaces
job = job_role.text.strip()

Собранные данные можно легко сохранить в формате Excel, Json, XML или CSV.

import Datetime
import csv
    with open(‘abc.csv’, ‘a’) as csv_file:
    writer = csv.writer(csv_file)
    writer.writerow([Job_Title, job, datetime.now()])

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

2. Динамическая веб-страница
Динамическая веб-страница - это та страница, которая при отправке запроса на веб-сервер получает код javascript вместе с кодом HTML
Теперь этот код javascript выполняется в нашем браузере для визуализации представления.
Раньше мы использовали URL-адрес для получения контента и легко очищали его с помощью BeautifulSoup. Но теперь код, который мы увидим при проверке веб-страницы, и код, который мы получим в нашем коде, будут отличаться.

Большая часть сайтов электронной коммерции динамична по своей природе. Что нельзя очистить с помощью urllib и BeautifulSoup.

[Q]. Так нельзя их выбросить?
[A].
Очевидно, что мы можем, и для этого мы собираемся использовать хорошо известный фреймворк, известный как «Selenium».

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

Загрузка Selenium и веб-страницы

# Loading selenium components
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

# Establish chrome driver and giving the URL
url = "xyz.com"
driver = webdriver.Chrome()
driver.get(url)

Для получения дополнительной информации о Selenium Scrapping посетите: https://www.scrapingbee.com/blog/selenium-python/

3. Умные веб-страницы
Многие крупные компании придерживаются определенных юридических правил в отношении несанкционированного сбора данных. Между тем, есть компании, которые даже не разрешают нам убирать свой сайт. Но как? Есть веб-страницы, содержание которых постоянно меняется, может быть, с помощью некоторого случайного числа с префиксом или суффиксом или тому подобным.

Один из таких примеров:

Цена внутри класса. И значение этого класса меняется каждую секунду. Делает трудным для человека удаление веб-страницы.

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

Заключение

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

Ссылки
Чтобы получить более подробное представление, воспользуйтесь этими ссылками.
https://hackernoon.com/building-a-web-scraper-from-start -то-финиш-bb6b95388184

Https://www.scrapingbee.com/blog/selenium-python/

Https://realpython.com/beautiful-soup-web-scraper-python/