Python Beautifulsoup примеры

Python beautifulsoup — библиотека, которая позволяет работать с содержимым веб-страниц в интернете, извлекая из больших объемов структурированной информации нужную. Используется для парсинга.

 

 

Python beautifulsoup: установка и использование, примеры

Прежде всего, создадим виртуальное окружение. Назвать его можно, например, parser

virtualenv parser

Подробнее о виртуальном окружении и необходимых для его работы пакетах

 

Активируем окружение

source parser/bin/activate

(parser) admin@desktop:/

В терминале после активации появляется указанное ранее имя.

 

 


Как установить beautifulsoup python

BeautifulSoup является частью бибилотеки bs4, парсер также требует requests, все устанавливается через pip из окружения

 

pip install requests bs4

[…skipped…]

Successfully installed certifi-2018.8.24 chardet-3.0.4 idna-2.7 requests-2.19.1 urllib3-1.23 beautifulsoup4-4.6.3 bs4-0.0.1

 


 

Установка завершена, теперь  можно перейти к созданию скрипта

 

mcedit parser.py

import requests
from bs4 import BeautifulSoup

page = requests.get('https://yandex.ru')
soup = BeautifulSoup(page.text, 'html.parser')

 

 

Создается объект BeautifulSoup, в скобках указываются два параметра.

 

Первый — результат применения метода text к содержимому переменной page. Переменная page содержит текст страницы, путь к которой задан.

Второй аргумент — html.parser

 

С данными далее можно производить любые манипуляции.

 

 

 

Пример форматирования результата полученного с помощью BeautifulSoup

 

Добавим в скрипт такие строки

city = soup.find(class_='geolink__reg')
print (city.prettify())

 

 

Вызов скрипта из консоли

python parser.py

<span>
Екатеринбург

</span>

 

Скрипт спарсил главную страницу Яндекса и получил содержимое тега с классом geolink__reg из HTML кода. Класс выбран для демонстрации при визуальном анализе исходного кода (CTRL+U в браузере).

В данном случае в нем находится город, определенный при помощи geoip

 

 

Здесь используется метод prettify, который позволяет создавать отформатированное дерево тегов с результатами поиска.

Теперь закомментируем последний print и вместо него

 

city = soup.find(class_='geolink__reg')
#print (city.prettify)
print (city.contents[0])

 

Если вызвать скрипт сейчас можно увидеть, что он отдает только сам контент, в данном случае — имя города.

python parser.py

Екатеринбург

 

Это достигнуто использованием contents[0], все лишние тэги удалены. Результаты парсинга можно сохранять в csv файлы или обычные текстовые документы. Записывать можно не все, а выбирать только нужное содержимое работая с ним как с текстом.