2014-12-03 4 views
0

Я пытаюсь просканировать некоторые сайты, используя scrapy. Ниже приведен пример кода. Разбор метода не вызван. Я пытаюсь запустить код через службу реакторов (предоставленный код). Итак, я запускаю его из startCrawling.py, который имеет реактор. Я знаю, что чего-то не хватает. Не могли бы вы помочь.Python Scrapy- Невозможно проползти

Спасибо,

Code-categorization.py 

from scrapy.contrib.spiders.init import InitSpider 
from scrapy.http import Request, FormRequest 
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor 
from scrapy.contrib.spiders import Rule 
from scrapy.selector import Selector 
from scrapy.selector import HtmlXPathSelector 
from items.items import CategorizationItem 
from scrapy.contrib.spiders.crawl import CrawlSpider 
class TestingSpider(CrawlSpider): 
     print 'in spider' 
     name = 'testSpider' 
     allowed_domains = ['wikipedia.org'] 
     start_urls = ['http://www.wikipedia.org'] 
     def parse(self, response): 

      # Scrape data from page 
      print 'here' 
      open('test.html','wb').write(response.body) 

startCrawling.py код-

from twisted.internet import reactor 
from scrapy.crawler import Crawler 
from scrapy.settings import Settings 
from scrapy import log, signals 
from scrapy.xlib.pydispatch import dispatcher 
from scrapy.utils.project import get_project_settings 

from spiders.categorization import TestingSpider 

# Scrapy spiders script... 

def stop_reactor(): 
    reactor.stop #@UndefinedVariable  
    print 'hi' 

    dispatcher.connect(stop_reactor, signal=signals.spider_closed) 
    spider = TestingSpider() 
    crawler = Crawler(Settings()) 
    crawler.configure() 
    crawler.crawl(spider) 
    crawler.start() 
    reactor.run()#@UndefinedVariable 

ответ

2

Вы не должны переопределить метод parse() при использовании CrawlSpider. Вы должны установить собственный callback в своем Rule с другим именем.
Вот отрывок из official documentation:

При написании правил обхода паука, избегать использования в качестве обратного вызова разобраны, так как CrawlSpider использует сам метод синтаксического анализа для реализации своей логики. Итак, если вы переопределите метод анализа, сканирование паука больше не будет работы.

+0

спасибо. Я принимаю ответ сразу. Я попробую это и дам вам знать. – user1930402

+1

Самый быстрый прием когда-либо, я просто щелкнул и стал зеленым :) – bosnjak

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