【问题标题】:TypeError: expected str, bytes or os.PathLike object, not set - error ScrapyTypeError:预期的 str、bytes 或 os.PathLike 对象,未设置 - 错误 Scrapy
【发布时间】:2019-02-06 14:29:15
【问题描述】:

我是使用 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 文件“/usr/lib/python3.6/posixpath.py”,第 66 行,在 伊萨布斯 s = os.fspath(s) TypeError: expected str, bytes or os.PathLike object, not set

【问题讨论】:

  • 请用导致此错误的行更新您的问题 -> 脚本中的第 66 行。

标签: python scrapy web-crawler scrapy-pipeline


【解决方案1】:

IMAGE_STORE 设置必须是单个路径。

替换:

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

与:

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

{'asdf'} 是带有字符串asdfset,因此是错误消息。

【讨论】:

    猜你喜欢
    • 2022-01-17
    • 2019-11-15
    • 2020-12-23
    • 1970-01-01
    • 2018-11-08
    • 2018-11-11
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多