代码之家  ›  专栏  ›  技术社区  ›  Ken J

Python-Scrapy提取aria标签的值

  •  1
  • Ken J  · 技术社区  · 6 年前

    我是Scrapy的新手,我正在尝试在类上刮出一个带有aria标签的页面:

    <body>
      <div class="item-price" aria-label="$1.99">
        .....
      </div>
    </body>
    

    我正试图在我的spider上使用以下解析来提取标签:

    def parse(self, response):
       price = circular_item.css("div.item-price > aria-label::text").extract()
       yield price
    

    2018-09-02 18:34:03 [scrapy.core.scraper] ERROR: Spider must return Request, BaseItem, dict or None, got 'list' in <GET https://example.com/test.html>
    

    2 回复  |  直到 6 年前
        1
  •  1
  •   gangabass    6 年前

    代码中有几个错误:

    def parse(self, response):
       item = {}
       item["price"] = response.xpath('//div[@class="item-price"]/@aria-label').extract_first()
       yield item
    
        2
  •  1
  •   Thomas Strub    6 年前

    如果要使用css提取器而不是xpath:

    def parse(self, response):
        item = {response.css('div.item-price::attr(aria-label)').extract_first()}
        yield item