2017-10-09 16 views
-1

python 버전 2.7.10 사용. 이 거미를 실행하여 웹 페이지에서 데이터를 추출하려고했습니다. 나는 초기에 데이터를 얻을 수 있었고, scrap을 설정하고 나의 mac 터미널에서 실행할 수 있었다. 하지만 이제는 데이터를 가져올 수 없으며 Traceback 오류가 발생합니다. Scrapy가 실행될 때 Traceback 오류로 인해 크롤링을 성공적으로 실행할 수 없습니다.

import scrapy 

class ShopcluesSpider(scrapy.Spider): 

    name = 'shopclues' 
    allowed_domains = ['www.shopclues.com/mobiles-featured-store-4g-smartphone.html'] 
    start_urls = ['http://www.shopclues.com/mobiles-featured-store-4g-smartphone.html/'] 
    #custom_settings = {'FEED_URI' : 'tmp/shopclues.csv'} 

    def parse(self, response): 
     titles = response.css('img::attr(title)').extract() 
     #images = response.css('img::attr(data-img)').extract() 
     prices = response.css('.p_price::text').extract() 
     discounts = response.css('.prd_discount::text').extract() 

     for item in zip(titles,prices,discounts): 
      scraped_info = { 
      'title' : item[0], 
      'price' : item[1], 
      #'image_urls' : [item[2]], #Set's the url for scrapy to download images 
      'discount' : item[2] 
      } 

      yield scraped_info 

다음과 같은 오류를 얻었다 : 공유 소스 코드를 기반으로

Traceback (most recent call last): 
    File "/usr/local/bin/scrapy", line 11, in <module> 
    sys.exit(execute()) 
    File "/Library/Python/2.7/site-packages/scrapy/cmdline.py", line 148, in execute 
    cmd.crawler_process = CrawlerProcess(settings) 


File "/Library/Python/2.7/site-packages/scrapy/crawler.py", line 243, in __init__ 
    super(CrawlerProcess, self).__init__(settings) 
    File "/Library/Python/2.7/site-packages/scrapy/crawler.py", line 134, in __init__ 
    self.spider_loader = _get_spider_loader(settings) 
    File "/Library/Python/2.7/site-packages/scrapy/crawler.py", line 330, in _get_spider_loader 
    return loader_cls.from_settings(settings.frozencopy()) 
    File "/Library/Python/2.7/site-packages/scrapy/spiderloader.py", line 61, in from_settings 
    return cls(settings) 
    File "/Library/Python/2.7/site-packages/scrapy/spiderloader.py", line 25, in __init__ 
    self._load_all_spiders() 
    File "/Library/Python/2.7/site-packages/scrapy/spiderloader.py", line 47, in _load_all_spiders 
    for module in walk_modules(name): 
    File "/Library/Python/2.7/site-packages/scrapy/utils/misc.py", line 71, in walk_modules 
    submod = import_module(fullpath) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/Users/acetonemarketing/Documents/scrapy/ourfirstscraper/ourfirstscraper/spiders/shopclues.py", line 16 
    for item in zip(titles,prices,discounts): 
    ^
IndentationError: unexpected indent 
+0

'IndentationError'는 소스 코드의 형식을 지정하는 것과 관련이 있습니다. 파이썬은 들여 쓰기를하기 위해 들여 쓰기를 사용하여 소스 코드를 구조화합니다. 그러나 코드를 복사하여 붙여 넣을 때 문제가 발생하지 않았습니다. –

+0

@ TomášLinhart 응답에 감사드립니다. 오류가 발생하지 않았으므로이 스파이더를 실행하고있는 사용자 계정과 관련이 있습니까? 내가 scrapy를 설치했을 때 sudo -H pip를 사용하여 치료를해야만했습니다. –

+0

스파이더를 실행하는 사용자 계정과는 아무 관련이 없습니다. 소스 코드에 들여 쓰기가 잘못되었지만 게시 한 내용이 명확하지 않습니다. –

답변

0

을, 문제는이 파일에 혼합 공백과 탭을 가지고있다. 이미 언급했듯이, 파이썬은 이것에 민감합니다. 일반적으로 들여 쓰기 레벨 당 4 개의 공백 만 사용해야합니다 (PEP8 권장).

특히, for 루프의 앞쪽에있는 탭을 제거하고 들여 쓰기 할 해당 공백 수로 대체하십시오.

+0

. 모든 행에 4 개의 공백을 사용하면 코드에 중첩 된 구조가 왜곡되지 않습니까? –

+0

필자는 각 줄마다 4 칸을 사용하지 않고 들여 쓰기 수준마다 4 칸을 사용했다. 나는. 'class ShopcluesSpider ...'는 줄을 시작하고'def parse ...'는 4 칸 들여 쓰기 등 –

+0

해명 해 주셔서 감사합니다. 이제는 들여 쓰기로 인한 오류가 해결되었습니다. –