Учебник по веб-скрапингу

RedDeveloper
14.03.2023 11:44
Учебник по веб-скрапингу

Привет, ребята... В этот раз мы поговорим о веб-скрейпинге. Целью этого обсуждения будет узнать и понять, что такое веб-скрейпинг, а также узнать, как использовать веб-скрейпинг с помощью языка программирования python.

Что такое веб-скрейпинг

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

Необходимые условия

Ранее мы должны были настроить среду python на устройстве, которое мы будем использовать. Мы также должны были установить Beautifulsoup и Request, с помощью которых мы будем использовать эту библиотеку для выполнения скраппинга. В этом учебнике мы будем использовать Visual Studio Code в качестве текстового редактора и Windows в качестве операционной системы.

Учебник

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

- Определите целевой веб-сайт или веб-сайт, который вы хотите соскрести.

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

- Создайте скрипт для скраппинга

- Сохранить данные.

Итак, давайте начнем...

источник :  https://www.traveloka.com/en-id/promotion
источник : https://www.traveloka.com/en-id/promotion

Наша цель - промо-страница Traveloka. После определения целевого сайта мы исследуем страницу сайта, чтобы получить данные и элементы на странице.

источник :  https://www.traveloka.com/en-id/promotion
источник : https://www.traveloka.com/en-id/promotion

Далее мы переходим к этапу создания скрипта скраппинга с помощью языка программирования python. Прежде всего, мы импортируем библиотеку, которая будет использоваться. В этом проекте мы будем использовать Beautifulsoup, Request и Csv.

import requests
from bs4 import BeautifulSoup
import csv

Далее мы делаем запрос к целевому сайту, которым является traveloka.

import requests
from bs4 import BeautifulSoup
import csv
page = requests.get('https://www.traveloka.com/en-id/promotion')
soup = BeautifulSoup(page.content, 'html.parser')
print(page.status_code)

Если мы выполним приведенный выше код, мы получим ответ, как показано ниже, это означает, что запрос к целевому URL успешно выполнен.

200

Далее мы создадим скрипт для сбора данных на веб-странице.

import requests
from bs4 import BeautifulSoup
import csv
page = requests.get('https://www.traveloka.com/en-id/promotion')
soup = BeautifulSoup(page.content, 'html.parser')

items = soup.findAll('div','promo-thumb')
for it in items:
    judul = it.find('div','promo-thumb-desc')
    time = it.find('div','promo-thumb-duration')

На основе приведенного выше кода мы получим данные о заголовке и времени из промо-ролика. В приведенном выше коде есть 2 функции, которые мы используем для получения данных на основе целевого элемента.

  1. findAll()
    Обычно функция findAll() используется для получения данных в виде таблицы или списка. findAll функционирует для получения всех данных на основе искомого элемента. Например:
items = soup.findAll('div','promo-thumb')

2. find()

Функция find() извлекает данные на основе HTML-тегов. Если существует более одного одинакового HTML-тега, будет извлечен самый верхний тег на HTML-странице. Например

judul = it.find('div','promo-thumb-desc')

Далее мы переходим к этапу хранения данных. В этой статье мы будем хранить данные в csv-файле.

import requests
from bs4 import BeautifulSoup
import csv
page = requests.get('https://www.traveloka.com/en-id/promotion')
soup = BeautifulSoup(page.content, 'html.parser')
header = ['Title', 'Time']
datas = []
items = soup.findAll('div','promo-thumb')
for it in items:
    judul = it.find('div','promo-thumb-desc').text.strip()
    time = it.find('div','promo-thumb-duration').text.strip()
    datas.append([judul,time])

writer = csv.writer(open('result/test.csv',"w", encoding="utf-8"))
writer.writerow(header)
for d in datas: 
    writer.writerow(d)

Полученные данные сохраняются в переменной массива для размещения данных. После этого они записываются в файл csv с именем "test.csv".

Заключение

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

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