在草率的CSS选择器中,如何获得字符串''而不是子字符串[]

时间:2019-07-08 13:24:45

标签: scrapy css-selectors

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

我尝试过

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'

3 个答案:

答案 0 :(得分:1)

这不是提取代码要做的事情,一旦提取了数据,就应该使用常规Python代码来做这件事:

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

答案 1 :(得分:0)

不确定是否可以直接在选择器中进行操作。另一种选择是先将其作为列表,然后将其转换为具有以下内容的字符串:

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

答案 2 :(得分:0)

获取元素的首次出现

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

enter image description here