我正在编写网络蜘蛛,以使用python 中的scrapy框架从网站上废弃一些产品。我想知道计算书面蜘蛛的覆盖率和缺失项目的最佳实践是什么。
我现在使用的是记录无法解析或引发异常的案例。举个例子:当我期望产品价格或地点地址的特定格式时,我发现我编写的正则表达式与报废的字符串不匹配。或者当我xpath
的特定数据选择器什么都不返回时。
有时,当产品在一页或多个页面中列出时,我也会使用curl
并grep
粗略计算产品数量。但我想知道是否有更好的做法来处理这个问题。
我正在编写网络蜘蛛,以使用python 中的scrapy框架从网站上废弃一些产品。我想知道计算书面蜘蛛的覆盖率和缺失项目的最佳实践是什么。
我现在使用的是记录无法解析或引发异常的案例。举个例子:当我期望产品价格或地点地址的特定格式时,我发现我编写的正则表达式与报废的字符串不匹配。或者当我xpath
的特定数据选择器什么都不返回时。
有时,当产品在一页或多个页面中列出时,我也会使用curl
并grep
粗略计算产品数量。但我想知道是否有更好的做法来处理这个问题。
是的,常见的方法是logging
用于记录错误并通过不返回任何内容来退出回调。
示例(需要产品价格):
loader = ProductLoader(ProductItem(), response=response)
loader.add_xpath('price', '//span[@class="price"]/text()')
if not loader.get_output_value('price'):
log.msg("Error fetching product price", level=log.ERROR)
return
您还可以使用信号来捕获和记录爬网时发生的各种异常,请参阅:
当您让蜘蛛失败并在一个特定的位置(信号处理程序)中捕获和处理错误时,这基本上遵循更容易请求宽恕而不是许可原则。
其他想法:
MissingRequiredFieldError
,InvalidFieldFormatError
如果爬网字段未通过验证,您可以提出该异常。