1

Функция spider_closed() не работает. Если я даю только инструкцию печати, она печатает, но если я выполняю вызов любой функции и возвращаю значение, оно не работает.Как выполнить функцию, после того, как проскальзывание выполняется в режиме scrapy?

import scrapy 
import re 
from pydispatch import dispatcher 
from scrapy import signals 

from SouthShore.items import Product 
from SouthShore.internalData import internalApi 
from scrapy.http import Request 

class bestbuycaspider(scrapy.Spider): 
    name = "bestbuy_dca" 

    allowed_domains = ["bestbuy.ca"] 

    start_urls = ["http://www.bestbuy.ca/Search/SearchResults.aspx?type=product&page=1&sortBy=relevance&sortDir=desc&pageSize=96&query=south+shore+furniture+beds", 
       "http://www.bestbuy.ca/Search/SearchResults.aspx?type=product&page=1&sortBy=relevance&sortDir=desc&pageSize=96&query=south+shore+furniture+night+stand", 
       "http://www.bestbuy.ca/Search/SearchResults.aspx?type=product&page=1&sortBy=relevance&sortDir=desc&pageSize=96&query=south+shore+furniture+headboard", 
       "http://www.bestbuy.ca/Search/SearchResults.aspx?type=product&page=1&sortBy=relevance&sortDir=desc&pageSize=96&query=south+shore+furniture+desk", 
       "http://www.bestbuy.ca/Search/SearchResults.aspx?type=product&page=1&sortBy=relevance&sortDir=desc&pageSize=96&query=south+shore+furniture+bookcase", 
       "http://www.bestbuy.ca/Search/SearchResults.aspx?type=product&page=1&sortBy=relevance&sortDir=desc&pageSize=96&query=south+shore+furniture+dresser", 
       "http://www.bestbuy.ca/Search/SearchResults.aspx?type=product&page=1&sortBy=relevance&sortDir=desc&pageSize=96&query=south+shore+furniture+tv+stand", 
       "http://www.bestbuy.ca/Search/SearchResults.aspx?type=product&page=1&sortBy=relevance&sortDir=desc&pageSize=96&query=south+shore+furniture+armoire", 
       "http://www.bestbuy.ca/Search/SearchResults.aspx?type=product&page=1&sortBy=relevance&sortDir=desc&pageSize=96&query=south+shore+furniture+kids", 
       "http://www.bestbuy.ca/Search/SearchResults.aspx?type=product&page=1&sortBy=relevance&sortDir=desc&pageSize=96&query=south+shore+furniture+changing+table", 
       "http://www.bestbuy.ca/Search/SearchResults.aspx?type=product&page=1&sortBy=relevance&sortDir=desc&pageSize=96&query=south+shore+furniture+baby"] 

    def __init__(self,jsondetails="",serverdetails="", *args,**kwargs): 
     super(bestbuycaspider, self).__init__(*args, **kwargs) 
     dispatcher.connect(self.spider_closed, signal=signals.spider_closed) 
     self.jsondetails = jsondetails 
     self.serverdetails=serverdetails 
     self.data = [] 

    def parse(self,response): 
     #my stuff here 



    def spider_closed(self,spider): 
     print "returning values" 
     self.results['extractedData']=self.data 
     print self.results=internalApi(self.jsondetails,self.serverdetails) 
     yield self.results 

1) Я хочу, чтобы вызвать некоторую функцию и возвращать Царапины значения

+0

, так что вы хотите продолжать сканирование в 'spider_closed'? уступая предметы или запросы? – eLRuLL

+0

Нет, я хочу вернуть обходные элементы после закрытия паука и вызвать еще одну функцию в другом файле py, поэтому он будет выполнять некоторые операции и давать некоторые значения. Мне нужно добавить и вернуть, мои обходные значения и вызывать функцию вывода вместе. –

+0

предметы, находящиеся под контролем, не хранятся в памяти, они выводятся при вызове 'yield item'. Если вы хотите обработать каждый элемент по мере его выхода, вам придется использовать конвейер, но использовать ВСЕ их после того, как пауки заканчиваются, это действительно плохая практика (потому что вам придется их хранить самостоятельно) – eLRuLL

ответ

0

Вы можете создать Item Pipeline с close_spider() метод:

class MyPipeline(object): 
    def close_spider(self, spider): 
     do_something_here() 

Только не забудьте активировать его в настройках .py, как описано в приведенной выше ссылке.

+0

Приносит извинения, я, m new to scrapy, мне нужно создать функцию Pipeline class & closs_spider в файле pipelines.py или изменить имя класса в моем файле-паук. –

+0

Если мне нужно создать класс и функцию в файле pipelines.py, так что мои сомнения: 1) Как я могу импортировать этот класс конвейера в мой файл-паук или автоматически? 2) как передать обходные значения функции close_spider, которая находится в файле pipelines.y. –

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

  • Нет связанных вопросов^_^