测试爬虫:
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
函数在类内吗?此代码段看起来缩进错误。