2017-11-13 15 views
0

json出力がよりきれいになるように、scrapyを使用するときに値のセットを組み合わせる方法について質問があります。ここに私が持っているものがあります:文字列を組み合わせるScream 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()) 

OR

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

はどちらも同じこと

+0

ああを行います!本当にありがとう。 – Edgar

関連する問題