Как установить Scrapy на Ubuntu 20.04 LTS

12 set 2022 3 min di lettura
Как установить Scrapy на Ubuntu 20.04 LTS
Indice dei contenuti

Введение

Scrapy — это фреймворк для веб-сканирования с открытым исходным кодом, написанный на Python. Первоначально созданный для парсинга веб-страниц, его также можно использовать для извлечения данных с помощью API или в качестве веб-краулера общего назначения.

Scrapy работает на Python 3.5 или новее с CPython (реализация Python по умолчанию) и PyPy (начиная с PyPy 5.9).

В этом руководстве мы покажем вам, как создать и запустить веб-паук с помощью Scrapy на вашем сервере Ubuntu 20.04 LTS Focal Fossa для извлечения информации с веб-страниц с помощью различных методов.

Если вы хотите установить Scrapy на удаленный сервер, продолжайте читать, в противном случае пропустите первый абзац «Подключение к серверу» и прочитайте следующий.

Подключение к серверу

Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:

ssh root@IP_DEL_SERVER

Далее вам нужно будет ввести пароль пользователя root.

Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:

ssh nome_utente@IP_DEL_SERVER

Затем вам будет предложено ввести пароль пользователя.

Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Использовать виртуальную среду (рекомендуется)

Мы рекомендуем устанавливать Scrapy в виртуальной среде на всех платформах.

Пакеты Python можно устанавливать глобально (т. е. общесистемно) или в пользовательском пространстве. Не рекомендуется устанавливать системную флешку Scrapy.

Вместо этого мы рекомендуем вам установить Scrapy в так называемой виртуальной среде. Виртуальные среды позволяют вам не конфликтовать с уже установленными системными пакетами Python (которые могут сломать некоторые системные инструменты и скрипты) и по-прежнему нормально устанавливать пакеты с помощью pip (без sudo и тому подобного).

Для получения дополнительной информации читайте: Виртуальные среды и пакеты.

Установите Scrapy на Ubuntu

В настоящее время Scrapy тестируется с довольно свежими версиями lxml, twisted и pyOpenSSL и совместим с последними дистрибутивами Ubuntu. Но он также должен поддерживать более старые версии Ubuntu, такие как Ubuntu 14.04, хотя и с потенциальными проблемами с соединениями TLS.

python-scrapy

Чтобы установить Scrapy в системах Ubuntu (или на основе Ubuntu), вам необходимо установить следующие зависимости:

sudo apt-get install python3 python3-dev python3-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
  • Для lxml python3-dev, zlib1g-dev, libxml2-dev и libxslt1-dev.
  • Для cryptography требуются пакеты libssl-dev и libffi-dev.
pippip3pythonpython3
pip3 install scrapy

Установите Scrapy с помощью conda

Если вы используете Anaconda или Miniconda, вы можете установить пакет с канала conda-forge, где есть обновленные пакеты для Linux, Windows и macOS.

conda install -c conda-forge scrapy

В качестве альтернативы, если вы уже знакомы с установкой пакетов Python, вы можете установить Scrapy и его зависимости PyPI с помощью:

pip3 install Scrapy
pippip3pythonpython3

Создайте новый проект с помощью Scrapy.

Давайте посмотрим, как использовать Scrapy, начнем с создания нового проекта с помощью следующей команды терминала:

sudo scrapy startproject esempio

Войдите во вновь созданную папку с помощью команды cd:

cd esempio

Вновь созданный каталог проекта будет иметь следующую структуру:

esempio/scrapy.cfg # file di configurazione per il deploy

 esempio/# module del progetto Python

 __init__.py

 items.py

 middlewares.py

 pipelines.py

 settings.py # Impostazioni del progetto

 spiders/__init__.py

Используйте Скрейпи

Scrapy позволяет загружать HTML-контент веб-страниц и извлекать из них информацию с помощью различных методов, таких как селекторы CSS. Чтобы облегчить этот процесс, Scrapy предоставляет «оболочку» для проверки экстраполяции информации в режиме реального времени.

Давайте посмотрим на краткий пример того, как поймать последнюю статью на reddit.com:

sudo scrapy shell "reddit.com"

Вы должны получить вывод, подобный следующему:

...
 [s] Available Scrapy objects:
 [s] scrapy scrapy module (contains scrapy.Request, scrapy.Selector, etc)
 [s] crawler <scrapy.crawler.Crawler object at 0x7fd0494600a0>
 [s] item {}
 [s] request <GET http://reddit.com>
 [s] response <200 https://www.reddit.com/>
 [s] settings <scrapy.settings.Settings object at 0x7fd04945dd30>
 [s] spider <DefaultSpider 'default' at 0x7fd048fc91f0>
 [s] Useful shortcuts:
 [s] fetch(url[, redirect=True]) Fetch URL and update local objects (by default, redirects are followed)
 [s] fetch(req) Fetch a scrapy.Request and update local objects
 [s] shelp() Shell help (print this help)
 [s] view(response) View response in a browser
 >>>

Чтобы получить заголовок первого поста, вы можете использовать селектор article h3::text:

response.css('article h3::text')[0].get()

Вы должны вывести заголовок последней статьи Reddit. Затем выйдите из оболочки с помощью следующей команды:

exit()

Вывод

В этом руководстве мы увидели, как установить и использовать среду веб-сканирования Scrapy в Ubuntu 20.04 LTS Focal Fossa.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.