Домашнее задание. Скрэппер для flickr
9 сентября 2017
Собрать изображения заданной тематики с сайта flickr.com.
Исходные данные
Flickr — это хранилище изображений. На этом сайте можно искать изображения по ключевым словам. Адрес страницы поиска вот такой:
https://www.flickr.com/search/?text=что-искать
Например, найдём фотографии кошек:
https://www.flickr.com/search/?text=cats
Пробелы в поисковом запросе следует заменять на символ +
:
https://www.flickr.com/search/?text=fat+cats
На странице результатов поиска показываются первые несколько фотографий. Каждая такая фотография заключена в тег <div>
, который можно отличить по наличию класса "photo-list-photo-view"
. При этом flickr использует хитрость: фотография задана как фоновое изображение элемента <div>
, а не с помощью тега <img>
. Однако это нам не должно помешать: ссылку на файл фотографии можно извлечь из значения атрибута style
, который выглядит как-то так:
<div class="... photo-list-photo-view ..." ... style="transform: translate(0px, 0px);
-webkit-transform: translate(0px, 0px); -ms-transform: translate(0px, 0px);
width: 244px; height: 180px;
background-image: url(//c6.staticflickr.com/4/3677/13545844805_170ec3746b_n.jpg)">
Извлечь вот эту ссылку на изображение: //c6.staticflickr.com/4/3677/13545844805_170ec3746b_n.jpg
с помощью регулярного выражения не составит труда.
Задача
С помощью библиотек requests и Beautiful Soup найти на сайте flickr набор изображений по некоторому поисковому запросу. Сохранить файлы этих изображений в текущий каталог.
Замечания
- Не забудьте добавить протокол
"https:"
к ссылке на изображение перед тем, как запрашивать его с помощью requests:https://c6.staticflickr.com/4/3677/13545844805_170ec3746b_n.jpg
- Сохранять файлы можно с произвольными именами (
result1.jpg
,result2.jpg
и т.п.), но расширение файла должно быть таким же, как в ссылке на файл. То есть если ссылка на файл заканчивалась на.jpg
, то и имя выходного файла должно заканчиваться на.jpg
. Расширение файла теоретически может быть любым:.jpg
,.png
,.gif
и т.д.