【问题标题】:In scrapy css selectors how do i get a strings ' ' instead of a sub-string [ ]在scrapy css选择器中我如何得到一个字符串''而不是一个子字符串[]
【发布时间】:2019-07-09 19:14:17
【问题描述】:

我不知道如何从选择器中取出字符串

我试过了

response.css('.size_list a::text').extract()

我明白了

['L', '1X', '2X', '3X', '4X', '5X']

这里是代码

    <span class="size_list">
         <a href="javascript:void(0)" class="itemAttr current" title="L" data- 
         value="L">L</a>

         <a href="javascript:void(0)" class="itemAttr" title="1X" data- 
           value="1X">1X</a>    

        <a href="javascript:void(0)" class="itemAttr" title="2X" data- 
         value="2X">2X</a>    

       <a href="javascript:void(0)" class="itemAttr" title="3X" data- 
         value="3X">3X</a>    

       <a href="javascript:void(0)" class="itemAttr" title="4X" data- 
        value="4X">4X</a>    
       <a href="javascript:void(0)" class="itemAttr" title="5X" data- 
        value="5X">5X</a>   
    </span>

我想要的是“'L', '1X', '2X', '3X', '4X', '5X'

【问题讨论】:

    标签: scrapy css-selectors


    【解决方案1】:

    这不是提取代码要做的事情,这是您在获得提取数据后应该使用常规 Python 代码做的事情:

    >>> extracted_data = ['L', '1X', '2X', '3X', '4X', '5X']
    >>> ', '.join("'%s'" % value for value in extracted_data)
    "'L', '1X', '2X', '3X', '4X', '5X'"
    

    【讨论】:

      【解决方案2】:

      不确定是否可以直接在选择器中进行。另一种方法是先将其作为列表获取,然后将其转换为字符串,如下所示:

      size_list = response.css('.size_list a::text').extract()
      string_size_list = ', '.join(size_list)
      

      【讨论】:

      • 哪一部分不行?将数据放入列表?或者用它们做一个字符串?
      【解决方案3】:

      获取第一次出现的元素

      response.css('.size_list a::text').extract_first()
      # or
      response.css('.size_list a::text').get()
      

      这应该可以工作

      item_list = response.css('.size_list a::text').extract()
      one_string = (', ').join(item_list) # this work
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-20
        • 2013-05-12
        • 2011-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-21
        相关资源
        最近更新 更多