2014-06-18 5 views
0

이것은 처음으로 거미를 만들고 내 노력에도 불구하고 내 CSV 내보내기에 아무 것도 반환하지 않습니다. 내 코드 :Scrapy : 스파이더는 아무것도 반환하지 않습니다

from scrapy.contrib.spiders import CrawlSpider, Rule 
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
from scrapy.selector import Selector 

class Emag(CrawlSpider): 
    name = "emag" 
    allowed_domains = ["emag.ro"] 
    start_urls = [ 
     "http://www.emag.ro/"] 

    rules = (Rule(SgmlLinkExtractor(allow=(r'www.emag.ro')), callback="parse", follow= True)) 

    def parse(self, response): 
     sel = Selector(response) 
     sites = sel.xpath('//a/@href').extract() 
     for site in sites: 
      site = str(site) 

     for clean_site in site: 
      name = clean_site.xpath('//[@id=""]/span').extract() 
      return name 

나는 사이트를 인쇄하면 URL 목록을 가져 오는 것이 좋습니다. scrapy shell의 URL 중 하나에서 이름을 검색하면 찾으실 수 있습니다. 문제는 모든 링크의 모든 이름이 크롤링되었을 때입니다. 나는 "emag> emag> emag.csv"와 함께 실행합니다.

힌트를 잘못주지시겠습니까? 거미의

답변

1

여러 문제 :

  • rules
  • Item의이 지정되지 않은 마지막 괄호 전에 반복 가능한 누락 쉼표해야한다 - 당신은/Item 클래스와 수익을 정의에서 그것을 얻을 필요

    : 거미 parse() 콜백 여기

은 거미의 고정 된 버전입니다

+0

많은 시간을 할애 할 수 있습니다. 아직까지는 아무것도 추출하지 못한다. 그 선택은 xpath 선택에도 잘못 되었습니까? – user3753592

+0

@ user3753592 이렇게하면 스파이더를 실행 해보십시오. 'scrapy crawl -o output.csv -t csv'. – alecxe

+0

녀석, 그게 내가 그들을 실행하는 최초의 방법이었습니다. 그럼에도 불구하고 나는 여전히 빈 파일을 가지고있다. – user3753592

관련 문제