2017-01-21 56 views
0

我是Scrapy的新手。我想從日本網站上獲取一些數據,但是當我運行下面的蜘蛛時,它不會在導出的文件上顯示任何數據。有人能幫助我嗎。Scrapy使用Scrapy的日本網站,但沒有輸出文件中的數據

導出爲csv格式並不會在shell中顯示任何結果,只是[]

這是我的代碼。

import scrapy 

class suumotest(scrapy.Spider): 

    name = "testsecond" 

    start_urls = [ 
     'https://suumo.jp/jj/chintai/ichiran/FR301FC005/?tc=0401303&tc=0401304&ar=010&bs=040' 
    ] 

    def parse(self, response): 
     # for following property link 
     for href in response.css('.property_inner-title+a::attr(href)').extract(): 
      yield scrapy.Request(response.urljoin(href), callback=self.parse_info) 



    # defining parser to extract data 
    def parse_info(self, response): 
     def extract_with_css(query): 
      return response.css(query).extract_first().strip() 

     yield { 
      'Title': extract_with_css('h1.section_title::text'), 
      'Fee': extract_with_css('td.detailinfo-col--01 span.detailvalue-item-accent::text'), 
      'Fee Descrition': extract_with_css('td.detailinfo-col--01 span.detailvalue-item-text::text'), 
      'Prop Description': extract_with_css('td.detailinfo-col--03::text'), 
      'Prop Address': extract_with_css('td.detailinfo-col--04::text'), 
     } 

回答

2

parse方法你的第一個CSS選擇器有故障的位置:

response.css('.property_inner-title+a::attr(href)').extract() 

+是這裏的故障。只需用空格代替它,如:

response.css('.property_inner-title a::attr(href)').extract() 

另一個問題是你定義extract_with_css()功能:

def parse_info(self, response): 
    def extract_with_css(query): 
     return response.css(query).extract_first().strip() 

這裏的問題是,extract_first()會默認返回None如果發現.strip()沒有值是string基類的函數,因爲你沒有得到一個字符串,這將引發一個錯誤。
爲了解決這個問題,你可以默認值設置爲extract_first是一個空字符串,而不是:

def parse_info(self, response): 
    def extract_with_css(query): 
     return response.css(query).extract_first('').strip() 
+0

沒有解決的問題。現在得到一個錯誤'spider_exception/AttributeError:30'@Granitosaurus –

+0

@bassamfarooq你可以發佈日誌嗎?好像現在你完全有一個不同的問題。你可以在linux上通過'scrapy crawl myspider&> output.log'命令產生一個日誌。或者至少複製你得到的整個回溯錯誤信息。 – Granitosaurus

+0

@bassamfarooq我試過運行你的蜘蛛,發現錯誤,請參閱我的編輯。 – Granitosaurus