CoderCastrov logo
CoderCastrov
Beautifulsoup - Парсер

Как ускорить парсинг с помощью Beautiful Soup в 5 раз

Как ускорить парсинг с помощью Beautiful Soup в 5 раз
просмотров
2 мин чтение
#Beautifulsoup - Парсер

BEAUTIFUL SOUP

Используйте эти 3 простых метода, чтобы ускорить парсинг с использованием beautiful soup

Зачем это полезно и важно?

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

Примечание: Разница наиболее заметна, если сервер находится в географически удаленной стране (или, другими словами, вы находитесь далеко от сервера, и задержка интернета является большим фактором во времени выполнения).

1. Повторное использование сессий (и их поддержка в активном состоянии) вместо создания нового запроса для каждой страницы.

По умолчанию, если вы не используете сессию, при каждом вызове объекта request создается новый запрос к серверу, что вызывает значительные задержки при установлении соединения. Вместо этого создайте сессию один раз и поддерживайте ее в активном состоянии до завершения цикла.

Вот разница в коде:

Традиционный код

import requests
url_ = <some_url_you_give>
response_object = requests.get(url_)
soup = BeautifulSoup(response_object.text, 'html.parser')

Код, использующий объект сессии

import requests
url_ = <some_url_you_give>
session_object = requests.Session()
page_obj = session_object.get(url_)
soup = BeautifulSoup(response_obj.text, 'html.parser')

Если вам нужно снова обратиться к URL-адресу в том же домене, вы можете повторно использовать объект сессии напрямую. Это НЕ создаст новую последовательность соединения между вашим скриптом и сервером - и сэкономит время.

2. Используйте lxml в качестве базового парсера вместо стандартного HTML парсера.

lxml работает быстрее, чем парсеры html.parser или html5lib.

Это потому, что парсер lxml, который вы будете использовать в Beautiful Soup, написан на языке C (использует библиотеку C libxml2), в то время как html.parser написан на языке Python.

Примечание: lxml должен быть установлен перед использованием. В зависимости от среды, вы можете использовать один из следующих методов для установки lxml, если он еще не установлен.

$ apt-get install python-lxml    
( для Linux )$ easy_install lxml   
( используя easy-install )$ pip install lxml    
( если вы используете традиционный установщик pip )

Исходный код

soup = BeautifulSoup(response_object.text, 'html.parser')

Исходный код с использованием lxml

soup = BeautifulSoup(response_object.text, 'lxml')

3. Установка библиотеки cchardet

Определение кодировки, используемой в веб-документе, занимает некоторое время (особенно если это большой документ). Вместе с lxml библиотека cchardet позволяет значительно ускорить определение используемой кодировки в документе.

pip install cchardet import cchardet 

Дополнительные ссылки:

Улучшение производительности - из официальной документации Beautiful Soup.

https://beautiful-soup-4.readthedocs.io/en/latest/#improving-performance

Документация Beautiful Soup - Beautiful Soup 4.4.0 documentation

Beautiful Soup 4 опубликован через PyPi, поэтому если вы не можете установить его с помощью системного пакетного менеджера, вы можете установить его...

beautiful-soup-4.readthedocs.io