Парсинг веб-страниц с использованием Python и BeautifulSoup часть 1
Парсинг веб-страниц является очень интересной темой в программировании. На рынке существует множество инструментов, но здесь мы создадим свой собственный скрипт на 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
Спасибо за чтение....