2014-07-13 1 views
0

Я запускаю Scrapy.org версию 2.7 64 бит в Windows Vista 64 бит. У меня есть Scrapy код, который пытается синтаксического анализа данных, содержащихся в таблице в URL, содержащейся в следующем коде:Scrapy throwing Traceback при попытке разобрать данные с табуляцией

from scrapy.spider import Spider 
from scrapy.selector import Selector 
from scrapy.utils.markup import remove_tags 
from scrapy.cmdline import execute 
import re 


class MySpider(Spider): 
    name = "wiki" 
    allowed_domains = ["whoscored.com"] 
    start_urls = ["http://www.whoscored.com/Players/3859/Fixtures/Wayne-Rooney"] 

def parse(self, response): 

    for row in response.selector.xpath('//table[@id="player-fixture"]//tr[td[@class="tournament"]]'): 
    # Is this row contains goal symbols? 
     list_of_goals = row.xpath('//span[@title="Goal"') 
     if list_of_goals: 
      print remove_tags(list_of_goals).encode('utf-8')  

execute(['scrapy','crawl','wiki']) 

Однако подбрасывая следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "c:\Python27\lib\site-packages\twisted\internet\base.py", line 1201, in mainLoop 
    self.runUntilCurrent() 
    File "c:\Python27\lib\site-packages\twisted\internet\base.py", line 824, in runUntilCurrent 
    call.func(*call.args, **call.kw) 
    File "c:\Python27\lib\site-packages\twisted\internet\defer.py", line 383, in callback 
    self._startRunCallbacks(result) 
    File "c:\Python27\lib\site-packages\twisted\internet\defer.py", line 491, in _startRunCallbacks 
    self._runCallbacks() 
--- <exception caught here> --- 
    File "c:\Python27\lib\site-packages\twisted\internet\defer.py", line 578, in _runCallbacks 
    current.result = callback(current.result, *args, **kw) 
    File "c:\Python27\lib\site-packages\scrapy\spider.py", line 56, in parse 
    raise NotImplementedError 
exceptions.NotImplementedError: 

Может кто-нибудь сказать мне, в чем проблема? Я пытаюсь получить экранную печать всех элементов в таблице, включая данные в целях и помогает столбцу.

Благодаря

+0

какую версию Scrapy вы используете? –

ответ

2

Ваши отступов неправильно:

class MySpider(Spider): 
    name = "wiki" 
    allowed_domains = ["whoscored.com"] 
    start_urls = ["http://www.whoscored.com/Players/3859/Fixtures/Wayne-Rooney"] 

    def parse(self, response): 

     for row in response.selector.xpath('//table[@id="player-fixture"]//tr[td[@class="tournament"]]'): 
     # Is this row contains goal symbols? 
      list_of_goals = row.xpath('//span[@title="Goal"') 
      if list_of_goals: 
       print remove_tags(list_of_goals).encode('utf-8') 

Реализация метода parse является обязательным требованием при использовании Spider class, это то, что этот метод, как и в исходном коде:

def parse(self, response): 
     raise NotImplementedError 

Ваш отступ был неправильным, поэтому разбор не был частью класса, и поэтому вы не реализовали необходимый метод.

raise NotImplementedError существует, чтобы обеспечить необходимый метод parse при наследовании от базового класса Spider.

Вы теперь просто должны найти правильный xpath;)

+0

, который бросает трассировку «Файл» C: \ Python27 \ lib \ site-packages \ twisted \ internet \ defer.py ", строка 578, в _runCallbacks \t current.result = callback (current.result, * args , ** kw) \t Файл «C: \ Python27 \ missing \ missing \ spiders \ test2.py», строка 61, в синтаксическом анализе \t list_of_goals = row.xpath ('// span [@ title = "Цель") \t Файл "C: \ python27 \ Lib \ сайт-пакеты \ SCRAPY \ селектор \ unified.py", строка 98, в XPath \t поднять ValueError ("Invalid XPath:% s" % запросов) \t exceptions.ValueError : Invalid XPath: // span [@ title = "Goal" 'спасибо – gdogg371

+0

yep, это еще один вопрос! У вас неправильный xpath. –

+0

извините, не прочитал последнее предложение вашего ответа! – gdogg371

Смежные вопросы