Beautiful Soup - Установка

Поскольку BeautifulSoup не является стандартной библиотекой Python, нам необходимо сначала установить ее. Мы собираемся установить самую последнюю библиотеку BeautifulSoup 4 (также известную как BS4).

Чтобы изолировать нашу рабочую среду и не нарушать существующую настройку, давайте сначала создадим виртуальную среду.

Создание виртуальной среды (необязательно)

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

Лучший способ установить любую машину с пакетом python - использовать pip, однако, если pip еще не установлен (вы можете проверить его с помощью - «pip –version» в командной строке или приглашении оболочки), вы можете установить, введя команду ниже -

Среда Linux

$sudo apt-get install python-pip

Среда Windows

Чтобы установить пип в окнах, сделайте следующее:

  • Загрузите get-pip.py из https://bootstrap.pypa.io/get-pip.py или из гитхаба на свой компьютер.

  • Откройте командную строку и перейдите в папку, содержащую файл get-pip.py.

  • Выполните следующую команду -

>python get-pip.py

Вот и все, pip теперь установлен на вашем компьютере с Windows.

Вы можете проверить установленный пип, выполнив команду ниже -

>pip --version
pip 19.2.3 from c:\users\yadur\appdata\local\programs\python\python37\lib\site-packages\pip (python 3.7)

Установка виртуальной среды

Выполните следующую команду в командной строке -

>pip install virtualenv

После запуска вы увидите снимок экрана ниже -

Команда ниже создаст виртуальную среду («myEnv») в вашем текущем каталоге -

>virtualenv myEnv

Снимок экрана

Чтобы активировать виртуальную среду, выполните следующую команду -

>myEnv\Scripts\activate

На приведенном выше снимке экрана вы можете видеть, что у нас есть префикс «myEnv», который сообщает нам, что мы находимся в виртуальной среде «myEnv».

Чтобы выйти из виртуальной среды, запустите deactivate.

(myEnv) C:\Users\yadur>deactivate
C:\Users\yadur>

Поскольку наша виртуальная среда готова, теперь давайте установим beautifulsoup.

Установка BeautifulSoup

Поскольку BeautifulSoup не является стандартной библиотекой, нам необходимо ее установить. Мы собираемся использовать пакет BeautifulSoup 4 (известный как bs4).

Linux машина

Чтобы установить bs4 в Debian или Ubuntu linux с помощью системного диспетчера пакетов, выполните следующую команду -

$sudo apt-get install python-bs4 (for python 2.x)
$sudo apt-get install python3-bs4 (for python 3.x)

Вы можете установить bs4 с помощью easy_install или pip (если вы обнаружите проблему при установке с помощью системного упаковщика).

$easy_install beautifulsoup4
$pip install beautifulsoup4

(Вам может потребоваться использовать easy_install3 или pip3 соответственно, если вы используете python3)

Windows машина

Установить beautifulsoup4 в windows очень просто, особенно если у вас уже установлен pip.

>pip install beautifulsoup4

Итак, теперь на нашем компьютере установлен beautifulsoup4. Поговорим о некоторых проблемах, возникших после установки.

Проблемы после установки

На компьютере с Windows вы можете столкнуться с ошибкой установки неправильной версии в основном из-за -

  • ошибка: ImportError “No module named HTMLParser”, то вы должны использовать версию кода для Python 2 под Python 3.

  • ошибка: ImportError “No module named html.parser” ошибка, то вы должны использовать версию кода Python 3 под Python 2.

Лучший способ выйти из двух вышеуказанных ситуаций - снова переустановить BeautifulSoup, полностью удалив существующую установку.

Если вы получите SyntaxError “Invalid syntax” в строке ROOT_TAG_NAME = u '[document]', тогда вам нужно преобразовать код python 2 в python 3, просто установив пакет -

$ python3 setup.py install

или вручную запустив скрипт преобразования Python 2 в 3 в каталоге bs4 -

$ 2to3-3.2 -w bs4

Установка парсера

По умолчанию Beautiful Soup поддерживает синтаксический анализатор HTML, включенный в стандартную библиотеку Python, однако он также поддерживает многие внешние сторонние синтаксические анализаторы Python, такие как синтаксический анализатор lxml или синтаксический анализатор html5lib.

Чтобы установить парсер lxml или html5lib, используйте команду -

Linux машина

$apt-get install python-lxml
$apt-get insall python-html5lib

Windows машина

$pip install lxml
$pip install html5lib

Как правило, пользователи используют lxml для повышения скорости, и рекомендуется использовать парсер lxml или html5lib, если вы используете старую версию python 2 (до версии 2.7.3) или python 3 (до версии 3.2.2), поскольку встроенный в python анализатор HTML является не очень хорошо справляется со старой версией.

Бегущий красивый суп

Пришло время протестировать наш пакет Beautiful Soup на одной из html-страниц (взяв веб-страницу - https://www.tutorialspoint.com/index.htm, вы можете выбрать любую другую веб-страницу) и извлечь с нее некоторую информацию.

В приведенном ниже коде мы пытаемся извлечь заголовок с веб-страницы -

from bs4 import BeautifulSoup
import requests
url = "https://www.tutorialspoint.com/index.htm"
req = requests.get(url)
soup = BeautifulSoup(req.text, "html.parser")
print(soup.title)

Выход

<title>H2O, Colab, Theano, Flutter, KNime, Mean.js, Weka, Solidity, Org.Json, AWS QuickSight, JSON.Simple, Jackson Annotations, Passay, Boon, MuleSoft, Nagios, Matplotlib, Java NIO, PyTorch, SLF4J, Parallax Scrolling, Java Cryptography</title>

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

for link in soup.find_all('a'):
print(link.get('href'))

Выход

https://www.tutorialspoint.com/index.htm
https://www.tutorialspoint.com/about/about_careers.htm
https://www.tutorialspoint.com/questions/index.php
https://www.tutorialspoint.com/online_dev_tools.htm
https://www.tutorialspoint.com/codingground.htm
https://www.tutorialspoint.com/current_affairs.htm
https://www.tutorialspoint.com/upsc_ias_exams.htm
https://www.tutorialspoint.com/tutor_connect/index.php
https://www.tutorialspoint.com/whiteboard.htm
https://www.tutorialspoint.com/netmeeting.php
https://www.tutorialspoint.com/index.htm
https://www.tutorialspoint.com/tutorialslibrary.htm
https://www.tutorialspoint.com/videotutorials/index.php
https://store.tutorialspoint.com
https://www.tutorialspoint.com/gate_exams_tutorials.htm
https://www.tutorialspoint.com/html_online_training/index.asp
https://www.tutorialspoint.com/css_online_training/index.asp
https://www.tutorialspoint.com/3d_animation_online_training/index.asp
https://www.tutorialspoint.com/swift_4_online_training/index.asp
https://www.tutorialspoint.com/blockchain_online_training/index.asp
https://www.tutorialspoint.com/reactjs_online_training/index.asp
https://www.tutorix.com
https://www.tutorialspoint.com/videotutorials/top-courses.php
https://www.tutorialspoint.com/the_full_stack_web_development/index.asp
….
….
https://www.tutorialspoint.com/online_dev_tools.htm
https://www.tutorialspoint.com/free_web_graphics.htm
https://www.tutorialspoint.com/online_file_conversion.htm
https://www.tutorialspoint.com/netmeeting.php
https://www.tutorialspoint.com/free_online_whiteboard.htm
http://www.tutorialspoint.com
https://www.facebook.com/tutorialspointindia
https://plus.google.com/u/0/+tutorialspoint
http://www.twitter.com/tutorialspoint
http://www.linkedin.com/company/tutorialspoint
https://www.youtube.com/channel/UCVLbzhxVTiTLiVKeGV7WEBg
https://www.tutorialspoint.com/index.htm
/about/about_privacy.htm#cookies
/about/faq.htm
/about/about_helping.htm
/about/contact_us.htm

Точно так же мы можем извлекать полезную информацию с помощью beautifulsoup4.

Теперь давайте разберемся с «супом» в приведенном выше примере.