CoderCastrov logo
CoderCastrov
Питон

Заметки о веб-скрапинге на Python

Заметки о веб-скрапинге на Python
просмотров
5 мин чтение
#Питон
Table Of Content

Хороший инструмент - залог успеха

Введение в веб-скрапинг

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

Что он может сделать для нас?

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

Шаги создания веб-скрапера

Uniform Resource Locator(URL)
  1. Отправка HTTP-запроса на целевой URL-адрес и получение исходного кода HTML-страницы.
html request, and response packets
  1. Анализ HTML-страницы: использование инструментов разработчика браузера для быстрого поиска тегов и определения местоположения данных.
google chrome developer tool
  1. Разбор HTML-страницы: использование парсера для создания древовидной структуры тегов.
html tree structure
  1. Извлечение данных: использование обхода для извлечения данных и сохранения их в определенном формате.

Технология парсинга веб-страниц

Протокол передачи гипертекста (HTTP)

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

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

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

Процесс обмена HTTP:

Определение данных веб-страницы

_Пример кода #1_
soup.select("div.release_movie_name > a.gabtn")soup.select("div.release_movie_name > div.en > a.gabtn")soup.select("div.release_movie_time")soup.select("div.release_movie_name dd > div.leveltext > span.count")
  1. Регулярные выражения (Regular Expression): Регулярные выражения используют одну строку для описания и сопоставления серии строк, соответствующих определенному синтаксическому правилу, чтобы найти нужные нам данные, такие как номера телефонов, суммы, адреса электронной почты и т. д.
  1. Выражение XPath: Язык запросов XPath используется для поиска позиции узла (node) в XML-документе, который соответствует определенному синтаксическому правилу. Он использует синтаксис, похожий на путь, для поиска узлов, и выражение XPath также применимо к языку разметки HTML, то есть мы можем использовать XPath для поиска определенных тегов.
_Пример кода #2_
<bookstore>   
  <book>     
    <title>中醫芳療百科:150種精油╳8大體質,調理改善策略</title>     
    <author>[沈莉莎](https://search.books.com.tw/search/query/key/%E6%B2%88%E8%8E%89%E8%8E%8E/adv_author/1/), [李嘉菱](https://search.books.com.tw/search/query/key/%E6%9D%8E%E5%98%89%E8%8F%B1/adv_author/1/)</author>     
    <publication_date>2019/05/17</publication_date>     
    <price>**537**</price>   
  </book> 
</bookstore>

Сохранение данных

Обычно после анализа и сбора данных мы можем сохранить данные в структурированном формате, который может быть сохранен в следующих форматах файлов.

Модуль для парсинга

Этот модуль представляет собой инструмент, который мы используем для взаимодействия с веб-сервером, осуществления HTTP-коммуникации и создания HTTP-запросов. Благодаря этому мы можем получать содержимое исходного кода веб-страницы, а также получать доступ к API и загружать файлы XML и JSON.

# Пример кода 3: Установка и загрузка модуля requests для Python 3
pip3 install requests

# Импорт модуля requests
import requests

# Использование метода GET для загрузки данных веб-страницы
r = requests.get('https://www.google.com.tw/')

# Код ответа сервера
print(r.status_code)
  1. Модуль Beautiful Soup

Beautiful Soup - это библиотека модулей Python, которая позволяет быстро разбирать HTML/XML и создавать объекты Beautiful Soup, которые содержат древовидную структуру всего языка разметки. Благодаря этой структуре мы можем использовать селекторы CSS для извлечения нужных нам данных.

# Пример кода 4

# Установка и загрузка модуля BeautifulSoup для Python 3
pip3 install BeautifulSoup

# Импорт модуля BeautifulSoup
from bs4 import BeautifulSoup

html_str = "<p>Hello World</p>"

# BeautifulSoup - это парсер HTML-страниц, который преобразует теги HTML в объекты Python
# BeautifulSoup имеет три парсера: lxml, html5lib, html.parser (встроенный)
soup = BeautifulSoup(html_str, "lxml")

print(soup)
  1. Модуль Selenium

Вышеупомянутые модули относятся к статическим веб-страницам, где структура страницы состоит из тегов и содержимого. Однако некоторые страницы генерируются с использованием языка сценариев веб-страницы JavaScript, и Beautiful Soup не может обрабатывать такие страницы.

Модуль Selenium позволяет управлять браузером, взаимодействовать с HTML-формами с использованием языка Python и получать данные с динамических веб-страниц.

  1. Модуль Scrapy

Модуль Scrapy является фреймворком для веб-скрапинга, который позволяет управлять HTTP-запросами, сессиями, вводом-выводом и анализировать содержимое веб-страницы.

Правила парсинга веб-страниц

Ссылки

Примеры и полный код! Пошаговое руководство по созданию веб-скрепера и извлечению данных из веб-страниц с использованием Python

Примеры и полный код! Пошаговое руководство по созданию веб-скрепера и извлечению данных из веб-страниц с использованием Python | TechOrange

BigData Digest [Почему мы выбрали эту статью] Веб-скрепинг - это, пожалуй, самая сильная сторона Python и одна из первых задач для начинающих. Эта статья с простым и понятным кодом поможет вам понять принципы веб-скрепинга. После этого вы сможете попробовать использовать различные API...

buzzorange.com

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

Использование Python и Beautiful Soup для извлечения и анализа данных веб-страниц, руководство по разработке веб-скрепера - G. T. Wang

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

blog.gtwang.org

Python: практическое применение веб-скрепинга и визуализации данных