Привет, ребята... В этот раз мы поговорим о веб-скрейпинге. Целью этого обсуждения будет узнать и понять, что такое веб-скрейпинг, а также узнать, как использовать веб-скрейпинг с помощью языка программирования python.
Проще говоря, веб-скрейпинг - это извлечение данных с веб-страниц. Нам не нужно использовать api, используемый на нашем целевом сайте, но мы непосредственно получаем данные или извлекаем их со страницы сайта.
Ранее мы должны были настроить среду python на устройстве, которое мы будем использовать. Мы также должны были установить Beautifulsoup и Request, с помощью которых мы будем использовать эту библиотеку для выполнения скраппинга. В этом учебнике мы будем использовать Visual Studio Code в качестве текстового редактора и Windows в качестве операционной системы.
Этапы, которые мы будем выполнять при веб-скреппинге, следующие:
- Определите целевой веб-сайт или веб-сайт, который вы хотите соскрести.
- Изучите страницу сайта, чтобы получить данные, которые вы хотите извлечь
- Создайте скрипт для скраппинга
- Сохранить данные.
Итак, давайте начнем...
Наша цель - промо-страница Traveloka. После определения целевого сайта мы исследуем страницу сайта, чтобы получить данные и элементы на странице.
Далее мы переходим к этапу создания скрипта скраппинга с помощью языка программирования 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 функции, которые мы используем для получения данных на основе целевого элемента.
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".
Основываясь на вышеописанном методе, мы можем получить данные с веб-сайта без нашего ведома и без необходимости расходовать используемый огонь. Полученные данные мы можем обрабатывать для различных целей, например, взяв пример из темы выше, мы можем управлять данными для получения самого дешевого промо, самого дешевого промо, авиакомпании, которая предоставляет больше всего промо, и других.
20.08.2023 18:21
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".
20.08.2023 17:46
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
19.08.2023 18:39
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.
19.08.2023 17:22
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!
18.08.2023 20:33
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.
14.08.2023 14:49
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.