В scrapy css-селекторах как получить строку '' вместо подстроки [] - PullRequest
0 голосов
/ 08 июля 2019

Я не могу понять, как получить строку из селектора

Я пытался

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 ]

1 голос
/ 09 июля 2019

Это не то, что должен делать код извлечения, это то, что вы должны делать с обычным кодом Python, когда у вас есть извлеченные данные:

>>> extracted_data = ['L', '1X', '2X', '3X', '4X', '5X']
>>> ', '.join("'%s'" % value for value in extracted_data)
"'L', '1X', '2X', '3X', '4X', '5X'"
0 голосов
/ 08 июля 2019

Для получения первого вхождения элементов

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

0 голосов
/ 08 июля 2019

Не уверен, возможно ли это сделать прямо в селекторе. Альтернативой может быть сначала получить его в виде списка и преобразовать его в строку с чем-то вроде этого:

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