vscode отладка Python Scrap не входит в функцию обратного вызова - PullRequest
0 голосов
/ 25 января 2019

испытательный гусеничный ход:

class QuotesSpider(scrapy.Spider):
name = "quotes"

def start_requests(self):
    urls = [
        'http://quotes.toscrape.com/page/1/',
        'http://quotes.toscrape.com/page/2/',
    ]
    for url in urls:
        yield scrapy.Request(url=url, callback=self.parse)

def parse(self, response):
    page = response.url.split("/")[-2]
    filename = 'quotes-%s.html' % page
    with open(filename, 'wb') as f:
        f.write(response.body)
    self.log('Saved file %s' % filename)

и я написал main.py:

sys.path.append(os.path.dirname(os.path.abspath(__file__)))
execute(["scrapy","crawl","quotes"])

и я добавил конфиг отладчика Python Scrapy, все в порядке, пока не ударил yield scrapy.Request (url = url, callback = self.parse) это не входит в функцию анализа обратного вызова?

Ответы [ 2 ]

0 голосов
/ 25 января 2019

хорошо, теперь я знаю почему, потому что запрос на выдачу является асинхронным, и обратный вызов будет вызван после того, как дочерний поток вернет результат, так что подождите некоторое время, он наконец отладит функцию синтаксического анализа

0 голосов
/ 25 января 2019

Вы уверены, что ваша функция parse находится внутри класса?Этот фрагмент кода выглядит так, как будто у вас неправильные отступы.

...