【问题标题】:AttributeError: 'list' object has no attribute 'css' in scrapyAttributeError:'list'对象在scrapy中没有属性'css'
【发布时间】:2020-12-24 15:08:52
【问题描述】:

抓取网站:http://quotes.toscrape.com

我正在使用 Scrapy 2.3.0。

我正在尝试从上述网站上抓取所有引用及其作者和标签。

有人可以向我解释为什么这段代码给出了

Error :
AttributeError: 'list' object has no attribute 'css'

在线:

author = quote.css('.author::text').extract()

我正在学习使用scrapy,但我被困在这个问题上。 导入scrapy

class QuotesSpider( scrapy.Spider ):
    name = "crawler"
    start_urls = [
        'http://quotes.toscrape.com/'
        ]

    def parse( self, response ):

        all_quotes = response.css(".quote")

        for quote in all_quotes:

            quote = quote.css('text::text').extract()
            author = quote.css('.author::text').extract()
            tags = quote.css('.tags::text').extract()
        
            yield {
                'quote': quote,
                'author' : author,
                'tags' : tags
                }

【问题讨论】:

    标签: python scrapy


    【解决方案1】:

    问题似乎是变量 quote 在 Python 执行导致错误的行时引用了一个列表(并且内置列表数据类型没有名为“css”的属性)。

    我建议你调试你的代码(如果你知道怎么做的话)。这应该可以让您深入了解究竟是什么问题。

    如果您对调试不满意,请注释掉 for 循环中的所有内容,除了带有 quote = quote.css('text::text').extract() 的行并添加 print(quote) 以查看变量 quote 的列表的确切结构是什么指的是。

    PS:我建议使用更好的变量名(而不是像你一样在for 循环中重新分配quote),以防止任何混淆。此外,我强烈建议您学习如何调试(如果您还不知道如何调试),因为它真的很有帮助。

    【讨论】:

      猜你喜欢
      • 2018-04-13
      • 2023-04-09
      • 2014-09-08
      • 2016-01-30
      • 2020-12-15
      • 2016-04-15
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多