Веб-скрапинг - это эффективный способ сбора данных с веб-страниц, он стал эффективным инструментом в науке о данных. Благодаря наличию различных библиотек Python для парсинга веб-страниц, таких как beautifulsoup, работа специалиста по данным становится оптимальной. Scrapy - это мощный веб-фреймворк, используемый для извлечения, обработки и хранения данных. В этой статье мы узнаем, как создать поискового робота с помощью scrapy. В этом блоге обсуждаются следующие темы:
- Что такое Scrapy?
- Что такое веб-сканер?
- Как установить Scrapy?
- Запуск вашего первого проекта Scrapy
- Создание вашего первого паука
- Извлечение данных
- Хранение извлеченных данных
Что такое Scrapy?
Scrapy - это бесплатный фреймворк для веб-сканирования с открытым исходным кодом, написанный на Python. Первоначально он был разработан для выполнения парсинга веб-страниц, но также может использоваться для извлечения данных с помощью API. Он поддерживается Scrapinghub ltd.
Scrapy - это полный пакет, когда дело доходит до загрузки веб-страниц, обработки и хранения данных в базах данных.
Когда дело доходит до парсинга веб-сайтов, это похоже на электростанцию с несколькими способами очистки веб-сайта. Scrapy с легкостью справляется с более крупными задачами, очищая несколько страниц или группу URL-адресов менее чем за минуту. Он использует твистер, который работает асинхронно для достижения параллелизма.
Он предоставляет паучьи контракты, которые позволяют нам создавать как общие, так и глубокие краулеры. Scrapy также предоставляет конвейеры элементов для создания функций в пауке, который может выполнять различные операции, такие как замена значений в данных и т. Д.
Что такое веб-сканер?
Веб-сканер - это программа, которая автоматически ищет документы в Интернете. В первую очередь они запрограммированы на повторяющиеся действия для автоматического просмотра.
Как это работает?
Веб-сканер очень похож на библиотекаря. Он ищет информацию в Интернете, классифицирует информацию, а затем индексирует и каталогизирует информацию для просканированной информации, которая будет извлечена и сохранена соответствующим образом.
Операции, которые будет выполнять краулер, создаются заранее, затем краулер автоматически выполняет все эти операции, что создает индекс. К этим индексам можно получить доступ с помощью программного обеспечения вывода.
Давайте посмотрим на различные приложения, для которых можно использовать поисковый робот:
- Порталы сравнения цен ищут информацию о конкретных продуктах, чтобы сравнить цены на разных платформах с помощью веб-сканера.
- Веб-сканер играет очень важную роль в области интеллектуального анализа данных для поиска информации.
- Инструменты анализа данных используют веб-сканеры для расчета данных по просмотрам страниц, а также по входящим и исходящим ссылкам.
- Сканеры также служат информационным узлам для сбора данных, например, новостным порталам.
Как установить Scrapy?
Чтобы установить scrapy в вашу систему, рекомендуется установить его на выделенный файл virtualenv. Установка работает так же, как и любой другой пакет в python, если вы используете среду conda, используйте следующую команду для установки scrapy:
conda install -c conda-forge scrapy
вы также можете использовать среду pip для установки scrapy,
pip install scrapy
В зависимости от вашей операционной системы может быть несколько зависимостей компиляции. Scrapy написан на чистом питоне и может зависеть от нескольких пакетов Python, например:
- lxml - это эффективный парсер XML и HTML.
- parcel - Библиотека извлечения HTML / XML, написанная поверх lxml
- W3lib - это многоцелевой помощник для работы с URL-адресами и кодировками веб-страниц.
- twisted - асинхронная сетевая структура
- криптография - помогает в решении различных задач безопасности на сетевом уровне.
Запуск вашего первого проекта Scrapy
Чтобы запустить свой первый проект scrapy, перейдите в каталог или место, где вы хотите сохранить файлы, и выполните следующую команду
scrapy startproject projectname
После выполнения этой команды вы получите следующие каталоги, созданные в этом месте.
- название проекта/
scrapy.cfg: развертывает файл конфигурации
- название проекта/
__init__.py: модуль Python проекта
items.py: файл определения элементов проекта
middlewares.py: файл промежуточного программного обеспечения проекта
pipelines.py: файл конвейеров проекта
settings.py: файл настроек проекта
- пауки /
__init__.py: каталог, в который позже вы поместите своих пауков.
Создание вашего первого паука
Пауки - это классы, которые мы определяем и которые scrapy использует для сбора информации из Интернета. Вы должны создать подкласс scrapy.Spider и определить начальные запросы, которые нужно сделать.
Вы пишете код своего паука в отдельном файле Python и сохраняете его в каталоге projectname / spiders в вашем проекте.
quotes_spider.py
import scrapy class QuotesSpider(scrapy.Spider): name = "quotes" def start_request(self): urls = [ '<a href="http://quotes.toscrape.com/page/1/">http://quotes.toscrape.com/page/1/</a>', http://quotes.toscrape.com/page/2/, ] for url in urls: yield scrapy.Request(url=url , callback= self.parse) def parse(self, response): page = response.url.split("/")[-2] filename = 'quotes-%s.html' % page with open(filename, 'wb') as f: f.write(response.body) self.log('saved file %s' % filename)
Как видите, мы определили различные функции в наших пауках,
- имя: идентифицирует паука, он должен быть уникальным на протяжении всего проекта.
- start_requests (): должен возвращать итерацию запросов, с которыми паук начнет сканировать.
- parse (): это метод, который будет вызываться для обработки ответа, загружаемого с каждым запросом.
Извлечение данных
До сих пор паук не извлекал никаких данных, он просто сохранял весь HTML-файл. Паук scrapy обычно генерирует множество словарей, содержащих данные, извлеченные со страницы. Мы используем ключевое слово yield в python в обратном вызове для извлечения данных.
import scrapy class QuotesSpider(scrapy.Spider): name = "quotes" start_urls = [ http://quotes.toscrape.com/page/1/', http://quotes.toscrape.com/page/2/, ] def parse(self, response): for quote in response.css('div.quote'): yield { 'text': quote.css(span.text::text').get(), 'author': quote.css(small.author::text')get(), 'tags': quote.css(div.tags a.tag::text').getall() }
Когда вы запустите этот паук, он выведет извлеченные данные с журналом.
Хранение данных
Самый простой способ сохранить извлеченные данные - использовать экспорт каналов. Для сохранения данных используйте следующую команду.
scrapy crawl quotes -o quotes.json
Эта команда сгенерирует файл quotes.json, содержащий все очищенные элементы, сериализованные в JSON.
На этом мы подошли к концу статьи, где мы узнали, как создать веб-сканер, использующий scrapy на Python, для очистки веб-сайта и извлечения данных в файл JSON. Надеюсь, вы понимаете все, о чем вам рассказали в этом уроке.
Если вы хотите ознакомиться с другими статьями о самых популярных технологиях на рынке, таких как искусственный интеллект, DevOps, этический взлом, посетите официальный сайт Edureka.
Обязательно обратите внимание на другие статьи в этой серии, которые объяснят различные другие аспекты Python и Data Science.
4. Библиотеки Python для науки о данных и машинного обучения
15. Python vs C ++
17. Python SciPy
20. Основы Python
23. Python Decorator
32. Python 3.8
Первоначально опубликовано на https://www.edureka.co 6 сентября 2019 г.