TypeError: ожидаемый объект str, bytes или os.PathLike, не установлен - ошибка Scrapy

Я новичок в использовании Scrapy. Я пытаюсь загрузить изображение и настроить конвейеры, но иногда возникает ошибка, и я не могу понять этого.

books.py

class Books2Spider(Spider):
    name = 'books2'
    allowed_domains = ['books.toscrape.com']
    start_urls = ['http://books.toscrape.com']

    def parse(self, response):
        books = response.xpath('//h3/a/@href').extract()
        ...
        pass


    def parse_book(self, response):
        l = ItemLoader(item=BooksCrawlerItem(), response=response)

        title = response.css('h1::text').extract_first()
        price = response.xpath('//*[@class="price_color"]/text()').extract_first()

        image_urls = response.xpath('//img/@src').extract_first()
        image_urls = image_urls.replace('../..', 'http://books.toscrape.com/')

        l.add_value('title', title)
        l.add_value('price', price)
        l.add_value('image_urls', image_urls)

        return l.load_item()

settings.py

ITEM_PIPELINES = {
    'scrapy.pipelines.images.ImagesPipeline': 1
}

IMAGES_STORE = {
    '/home/jaki/Dev/WebScrapingScratch/images'
}

Я просматриваю эту команду, scrapy crawl books2. Если все в порядке, изображения будут загружены. Но я столкнулся с ошибкой. Ошибка,

... if os.path.isabs (uri): # для поддержки путей win32, например: C: \ some \ dir File "/usr/lib/python3.6/posixpath.py", строка 66, в isabs s = os .fspath (s) TypeError: ожидаемый объект str, bytes или os.PathLike, не установлен


person Jaki    schedule 06.02.2019    source источник
comment
обновите свой вопрос, добавив в него строку, вызывающую эту ошибку, ›строка 66 в вашем скрипте.   -  person ddor254    schedule 06.02.2019


Ответы (1)


Параметры IMAGE_STORE должны быть единый путь.

Заменять:

IMAGES_STORE = {
    '/home/jaki/Dev/WebScrapingScratch/images'
}

с участием:

IMAGES_STORE = '/home/jaki/Dev/WebScrapingScratch/images'

{'asdf'} - это set со строкой asdf , отсюда и сообщение об ошибке.

person Gallaecio    schedule 06.02.2019