Я создал скрипт с использованием модуля python scrapy для загрузки и переименования изображений фильмов с нескольких страниц с торрент-сайта и сохранения их в папке на рабочем столе.Когда речь идет о загрузке и хранении этих изображений в папке на рабочем столе, мой сценарий остается без ошибок.Однако сейчас я пытаюсь переименовать эти файлы на лету.Поскольку я не использовал файл item.py
и не хочу этого, я с трудом понимаю, как логика файла pipelines.py
могла бы обрабатывать процесс переименования.
Мой паук (It downloads the images flawlessly
):
from scrapy.crawler import CrawlerProcess
import scrapy, os
class YifySpider(scrapy.Spider):
name = "yify"
allowed_domains = ["www.yify-torrent.org"]
start_urls = ["https://www.yify-torrent.org/search/1080p/p-{}/".format(page) for page in range(1,5)]
custom_settings = {
'ITEM_PIPELINES': {'scrapy.pipelines.images.ImagesPipeline': 1},
'IMAGES_STORE': r"C:\Users\WCS\Desktop\Images",
}
def parse(self, response):
for link in response.css("article.img-item .poster-thumb::attr(src)").extract():
img_link = response.urljoin(link)
yield scrapy.Request(img_link, callback=self.get_images)
def get_images(self, response):
yield {
'image_urls': [response.url],
}
if __name__ == "__main__":
c = CrawlerProcess({
'USER_AGENT': 'Mozilla/5.0',
})
c.crawl(YifySpider)
c.start()
pipelines.py
содержит: (the following lines are the placeholders to let you know I at least tried
):
from scrapy.http import Request
class YifyPipeline(object):
def file_path(self, request, response=None, info=None):
image_name = request.url.split('/')[-1]
return image_name
def get_media_requests(self, item, info):
yield Request(item['image_urls'][0], meta=item)
Как я могу переименовать изображения через pipelines.py
без использования item.py
?