2017-11-13 7 views
0

내 json 출력이 더 깨끗해 지도록 치료를 사용할 때 값 집합을 결합하는 방법에 대한 질문이 있습니다. 다음은 내가 가지고있는 것입니다.결합 문자열 Scrapy python

import scrapy 
from scrapy.contrib.loader import ItemLoader 
from scrapy.contrib.loader.processor import TakeFirst, MapCompose, Join 

class LLPubs (scrapy.Spider): 
    name = "linlinks" 
    start_urls = [ 
     'http://www.linnaeuslink.org/records/record/1', 
     'http://www.linnaeuslink.org/records/record/2', 
     'http://www.linnaeuslink.org/records/record/2a', 
     'http://www.linnaeuslink.org/records/record/10', 
] 

    def parse(self, response): 
     for item in response.css('div.item'): 
      yield { 
       'text': item.css('div.field.soulsbyNo .value span::text').extract(), 
       'uniformtitle': item.css('div.field.uniformTitle .value span::text').extract(), 
       'title': item.css('div.field.title .value span::text').extract(), 
       'opac': item.css('div.field.localControlNo .value span::text').extract(), 
       'digitalcopyurl': .join(response.css('div#digitalLinks li a').xpath('@href').extract()), 
       'name': response.css('div#digitalLinks li a span::text').extract(), 
       } 

"digitalcopyurl"은 내가 문제가있는 곳입니다. 이런 식으로 "가입"을 사용할 수는 없지만 무엇을 수정해야할지 모르겠습니다. 여기에 JSON 지금의 모습의 예 :

{"text": ["Soulsby no. 46(1)"], 
"uniformtitle": ["Systema naturae"], 
"title": ["Caroli Linnæi ... Systema naturæ\nin quo naturæ regna tria, secundum classes, ordines, genera, species, systematice proponuntur."], 
"opac": ["002178079"], 
"digitalcopyurl": ["http://books.google.co.uk/books?vid=BL:A0019621817", "http://books.google.co.uk/books?vid=BL:A0019621817", "", ""], 
"name": ["View digital version at BL", "View digital version at BL", "View digital version at NHM-LONDON", "View digital version at UUL"]}, 

내가 "digitalcopyurl"보는 싶습니다 더 같은 :

"digitalcopyurl": ["http://books.google.co.uk/books?vid=BL:A0019621817, http://books.google.co.uk/books?vid=BL:A0019621817"], 

(그리고 내가 할 동일한 솔루션을 사용하고 싶습니다 '이름'입력란과 동일)

도움 주셔서 감사합니다.

편집 : 예제 출력은 ".join"을 사용하지 않습니다.

답변

2

'digitalcopyurl': ", ".join(response.css('div#digitalLinks li a').xpath('@href').extract()) 

또는

'digitalcopyurl': ", ".join(a.strip() for a in response.css('div#digitalLinks li a').xpath('@href').extract()) 

가 모두 같은 일

+0

아 할 것입니다 쓰기! 정말 고마워. – Edgar