VSCODE 调试 Python scrapy 不单步进入回调函数



测试爬虫:

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抓取调试器配置,一切都很好,直到命中产量刮擦。请求(url=url, callback=self.parse)它不会单步进入回调解析函数?

好的,现在我知道为什么了,因为yield请求是异步的,子线程返回结果后会调用回调,所以等一会儿,它最终会调试成解析函数

我在

调试回调函数时遇到了同样的问题。

我在回调函数中添加了breakpoint(),它可以再次调试。我分享了关心的人。

def parse(self, response):
    breakpoint()
    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)

你确定你的parse函数在类内吗?此代码段看起来缩进错误。

最新更新