#web #scrapy #screen-scraping
#веб #scrapy #очистка экрана
Вопрос:
В основном я очистил тысячи изображений и сумел поместить их в папки, классифицированные по имени. В этих папках изображения помечены множеством случайных чисел. Мне интересно, есть ли способ извлечь метку из URL-адреса, чтобы назвать изображение.
Например.
https://s3.amazonaws.com/cdn-origin-etr.akc.org/wp-content/uploads/2017/11/13002044/Affenpinscher-On-White-04.jpg
Соответствующее изображение для этой ссылки помечено 02563d3fe1d2933fe6dec09dc00b69bbabbf1560.jpg
и я бы хотел, чтобы он соответствовал ссылке: Affenpinscher-On-White-04.jpg
Кто-нибудь знает, как я могу это сделать?
Для этого я использовал scrapy.
Комментарии:
1. Не могли бы вы поделиться своим кодом, чтобы мы могли видеть, как собираются эти изображения?
Ответ №1:
Если вы просто посмотрите на документацию scrapy, это уже доступно
https://docs.scrapy.org/en/latest/topics/media-pipeline.html#module-scrapy.pipelines .Файлы
Расширение конвейеров мультимедиа
Смотрите Здесь методы, которые вы можете переопределить в конвейере пользовательских файлов:
classscrapy.pipelines.Файлы.FilesPipeline[источник] file_path(self, request, response=None, info = None, *, item = None)[источник] Этот метод вызывается один раз для каждого загруженного элемента. Он возвращает путь загрузки файла, полученного из указанного ответа.
В дополнение к ответу, этот метод получает исходный запрос, информацию и элемент
Вы можете переопределить этот метод, чтобы настроить путь загрузки каждого файла.
Например, если URL-адреса файлов заканчиваются как обычные пути (например https://example.com/a/b/c/foo.png ), вы можете использовать следующий подход для загрузки всех файлов в папку files с их исходными именами файлов (например, files/foo.png):
import os
from urllib.parse import urlparse
from scrapy.pipelines.files import FilesPipeline
class MyFilesPipeline(FilesPipeline):
def file_path(self, request, response=None, info=None, *, item=None):
return 'files/' os.path.basename(urlparse(request.url).path)
Аналогично, вы можете использовать элемент для определения пути к файлу на основе некоторого свойства элемента.
По умолчанию метод file_path() возвращает полный/ ..
Новое в версии 2.4: параметр item.