CoderCastrov logo
CoderCastrov
Парсинг

Парсинг веб-страниц с использованием Python и BeautifulSoup часть 1

Парсинг веб-страниц с использованием Python и BeautifulSoup часть 1
просмотров
3 мин чтение
#Парсинг

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

Давайте начнем

Требования

  • Компилятор Python
  • Библиотека requests (для запроса веб-сайта)
  • Библиотека BeautifulSoup (для парсинга или поиска нужного контента)

Если у вас нет компилятора Python, то сначала загрузите его с python.org. Когда Python установлен, также необходимо установить requests и BeautifulSoup через pip

pip install bs4
pip install requests

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

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

Давайте сначала возьмем веб-сайт для простого парсинга. У меня есть некоторая работа по парсингу с yellow-pages Philippines. На этом веб-сайте мы будем парсить название и адрес компании. Сначала настроим запрос на получение исходного кода этого веб-сайта с помощью requests. Requests изначально имеет два метода: get и post, поэтому здесь мы вызываем функцию get,

import requests
url = "[https://www.yellow-pages.ph/search/warehouse/nationwide/page-1](https://www.yellow-pages.ph/search/warehouse/nationwide/page-1)"
r = requests.get(url)
print(r.status_code)

status_code сообщает нам код состояния веб-сайта, он должен быть 200, код состояния может быть 404 или 503. Здесь работа библиотеки requests завершена, теперь второй шаг - разбор исходного кода с помощью beautifulSoup.

import requests
from bs4 import BeautifulSoup as BS
url = "[https://www.yellow-pages.ph/search/warehouse/nationwide/page-1](https://www.yellow-pages.ph/search/warehouse/nationwide/page-1)"
r = requests.get(url)
if(r.status_code == 200):
    soup = BS(r.content,'html.parser')

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

после просмотра кода элемента

если мы ищем код в инспекторе, мы легко найдем тег, сначала щелкните правой кнопкой мыши на правой стороне вкладки "Просмотреть код элемента", затем наведите курсор на внешний блок поискового элемента

здесь мы видим внешний блок в <div class=”search-listing”> и внутренний текстовый блок в <h2 class=”search-tradename”> поэтому мы сначала разбираем внешний блок, а затем находим внутренний текст в каждом блоке.

внешний и внутренний блок

атрибут class важен для парсинга с именем тега, у soup есть в основном две функции soup.find и soup.find_all, find используется для возврата одного контента, а find_all возвращает список контента

  • soup.find(<имя тега>(обязательно),<имя класса>(необязательно))
  • soup.find_all(<имя тега>(обязательно),<имя класса>(необязательно))
companyNames = []
outer_block = soup.find_all("div","search-listing")
for block in outer_block:
   company_name = block.find("h2","search-tradename").text.strip()
   companyNames.append(company_name)
print(companyNames) #список названий компаний

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

Внешний блок веб-сайта

Проверьте полный код

это часть 1 для парсинга, проверьте мою другую статью с несколькими другими функциями парсинга

Парсинг веб-страниц с использованием Python и Beautiful Soup часть 2

Парсинг веб-страниц с использованием Beautiful Soup, XPath, регулярных выражений и pandas

medium.com

Спасибо за чтение....