Scrapeasy
Scrapeasy - это библиотека для Python, которая позволяет легко обрабатывать веб-страницы и извлекать из них данные. Ее можно использовать для поиска данных с одной страницы или с нескольких страниц. Она также может использоваться для извлечения данных из PDF-файлов и HTML-таблиц.
Scrapeasy позволяет вам осуществлять сканирование веб-сайтов с помощью python, используя всего одну строку кода. Он очень прост в использовании и все делает за вас. Просто укажите сайт, который вы хотите исследовать, и какие данные вы хотите получить, а Scrapeasy сделает все остальное.
Скребок Scrapeasy Python был написан для быстрого использования. Он предоставляет следующие ключевые возможности
- Анализ веб-сайтов - не только отдельных страниц - одним щелчком мыши.
- Наиболее распространенные действия скрапера (получение ссылок, изображений или видео) уже реализованы.
- Получение специальных типов файлов, таких как .php или .pdf, с исследованного веб-сайта.
Как использовать Scrapeasy
Скачать через pip
$ pip install scrapeasy
Использование
Scrapeasy был разработан с учетом простоты использования. Сначала импортируйте сайт и страницу из Scrapeasy
from scrapeasy import Website, Page
Инициализация веб-сайта
Сначала давайте создадим новый объект Website. Для этого просто укажите url главной страницы. Я буду использовать URL сайта, который я создал несколько лет назад:
web =Website("https://tikocash.com/solange/index.php/2022/04/13/how-do-you-control-irrational-fear-and-overthinking/")
Получение ссылок всех подсайтов
Итак, теперь, когда мы инициализировали наш веб-сайт, нас интересуют все подсайты, существующие на fahrschule-liechti.com. Чтобы выяснить это, попросите web-объект получить ссылки всех подстраниц.
links = web.getSubpagesLinks()
В зависимости от вашего локального интернет-соединения и скорости сервера домена, с которого вы производите поиск, этот запрос может занять некоторое время. Убедитесь, что вы не собираете с помощью этого метода целые веб-страницы, которые невероятно велики.
Но вернемся к получению ссылок: Вызывая .getSubpagesLinks(), вы запрашиваете все подстраницы как ссылки и получаете список ссылок.
links2 = web.getSubpagesLinks()
Вы, наверное, заметили, что типичный http://www.-stuff отсутствует. Это не специально и облегчает вам жизнь для дальнейшей работы со ссылками. Но убедитесь, что когда вы действительно захотите вызвать их в браузере или через запросы, вы добавите http://www. перед каждой ссылкой.
Поиск медиа
Давайте попробуем найти ссылки на все изображения, которые fahrschule-liechti.com разместил на своем сайте. Для этого вызовем метод .getImages().
images = web.getImages()
В ответе будут содержаться ссылки на все доступные изображения.
Скачать медиа
Круто! Теперь давайте займемся более продвинутыми вещами. Нам нравятся фотографии, которые есть на сайте fahrschule-liechti.com, поэтому давайте загрузим их все на наш локальный диск. Звучит как много работы? На самом деле это очень просто!
web.download("img", "fahrschule/images")
Во-первых, мы определили, что будем загружать все изображения-медиа через ключевое слово img. Затем мы определили выходную папку, в которую должны быть сохранены изображения. Вот и все! Запустите код и посмотрите, что происходит. В течение нескольких секунд вы получили все изображения, имеющиеся на сайте Tikocash.com.
Получение связанных доменов
Далее, давайте выясним, на какие страницы ссылается fahrschule-liechti.com. Чтобы получить общий обзор, давайте просто выясним, на какие другие домены он ссылается. По этой причине мы указываем только доменные ссылки.
domains = web.getLinks(intern=False, extern=False, domain=True)
В результате мы получим список всех доменов, которые где-то ссылаются на tikocash.com
Хорошо, но теперь мы хотим получить более подробную информацию об этих ссылках. Как нам это сделать?
Получение связанных доменов
Более подробные ссылки - это не что иное, как внешние ссылки. Поэтому мы делаем тот же запрос, но на этот раз включаем внешние ссылки, но не домены.
domains = web.getLinks(intern=False, extern=True, domain=False)
Тадаа, мы получаем все внешние ссылки в полном объеме.
Инициализация страницы
Итак, к этому моменту мы уже немного узнали о том, что такое веб-сайт, но мы еще не выяснили, что делает страница. Ну, как уже было сказано, страница - это просто отдельный сайт из веб-сайта. Давайте попробуем это на другом примере, инициализировав страницу школы w3.
w3=Page("https://www.w3schools.com/html/html5_video.asp")
Через секунду вы увидите, почему я выбрал именно эту страницу, если вы еще не догадались.
Загрузка видео
Да, вы не ослышались. Scrapeasy позволяет загружать видео с веб-страниц за считанные секунды. Давайте посмотрим, как это делается.
w3.download("video", "w3/videos")
Да, это все. Просто укажите, что вы хотите загрузить все видео в выходную папку w3/videos, и все готово. Конечно, вы также можете просто получать ссылки на видео и загружать их позже, но это было бы не так круто.
video_links = w3.getVideos()
Загрузка файлов других типов (например, pdf или ics)
Давайте теперь будем более общими. Как насчет загрузки специальных типов файлов, таких как .pdf, .php или .ico? Используйте общий метод .get() для получения ссылок или метод .download() с указанием типа файла в качестве аргумента. Давайте воспользуемся методом get для получения убедительных ссылок на календарные данные о клубе компьютерных наук университета Цюриха, UZH:
calendar_links = Page("https://www.icu.uzh.ch/events/id/207").get("ics").
Выполнено.
Давайте теперь загрузим некоторые PDF-файлы. Мы уже должны знать, как использовать .download(), но я продемонстрирую это в последний раз.
Page("http://mathcourses.ch/mat182.html").download("pdf", "mathcourses/pdf-files")
В заключение хочу сказать, что Python - это универсальный язык, который можно использовать для сканирования любого веб-сайта за считанные секунды с помощью всего одной строки кода. Это делает его мощным инструментом для веб-скрейпинга и добычи данных. Так что если вам нужно извлечь данные с веб-сайта, Python - это инструмент для вас.