Установка Beautifulsoup и примеры


Разберем как производится установка 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



Пример вывода на скриншоте:

Установка Beautifulsoup


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




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 файлы или обычные текстовые документы. Записывать можно не все, а выбирать только нужное содержимое работая с ним как с текстом.



Скрипты с BeautifulSoup можно запускать по какому-то расписанию по системному планировщику задач CRON

Сказать спасибо