Мой вызов функции вне класса не работает в Scrapy / Python - PullRequest
1 голос
/ 01 августа 2020
def printer (param1,2,3,4,5,6,7,8,9,10,11):
    print(f"Here is param1: {param1}")
    #actual stuff happens
    item_data = item()
    item_data["item characteristic1"] = variable
    item_data["item characteristic2"] = variable
    yield item(**item_data)

class ExampleSpider(scrapy.Spider):
    name = 'example'
    allowed_domains = []
    start_urls = [URL]

    def parse(self, response):
        #gets nested URL and sends to parsenestedurl()

    def parsenestedurl(self, response):
        #does stuff
        print("we made it")
        printer(1,2,3,4,5,6,7,8,9,10,11)

Итак, у меня есть код, похожий на показанный выше, и я вижу, что прохожу через parsenestedurl() нормально, и он всегда печатает we made it, но никогда не доходит до функции printer и печатает первый оператор print(f"Here is param1: {param1}") что я здесь делаю не так? Я знаю, что у меня много параметров, но это технически не имеет значения, верно? Когда я комментирую доходность из printer(), он работает совершенно нормально, так что это что-то с доходностью.

1 Ответ

1 голос
/ 01 августа 2020

Поскольку функция printer является генератором, имеющим любой вывод parsenestedurl будет выглядеть так:

def parsenestedurl(self, response):
    #does stuff
    print("we made it")
    a = printer(1,2,3,4,5,6,7,8,9,10,11)
    yield next(a)

Или измените printer на простую функцию и

return item(**item_data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...