计算粗糙网络的覆盖率

2024-04-26 13:32:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写webspider,以便使用python中的scrapy框架从网站上废弃一些产品。 我想知道计算书面蜘蛛的覆盖率和缺失项的最佳实践是什么。你知道吗

我现在使用的是记录无法解析或引发异常的案例。 举个例子:当我期望一个产品的价格或一个地方的地址有一个特定的格式时,我发现我写的正则表达式与废弃的字符串不匹配。或者当特定数据的xpath选择器不返回任何内容时。你知道吗

有时当产品在一页或多页中列出时,我使用curlgrep粗略计算产品的数量。但我想知道是否有更好的方法来处理这个问题。你知道吗


Tags: 框架产品网站地址格式地方记录覆盖率
1条回答
网友
1楼 · 发布于 2024-04-26 13:32:04

常见的方法是,使用^{}记录错误并通过不返回任何内容退出回调。你知道吗

示例(需要产品价格):

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

您还可以使用signals捕获并记录爬网时发生的所有类型的异常,请参阅:

这基本上遵循了Easier to ask for forgiveness than permission原则,当您让spider失败并在一个特定的地方(信号处理程序)捕获和处理错误时。你知道吗


其他想法:

  • 您甚至可以将响应URL和错误回溯放置到数据库中,以便进行后续检查—这仍然是“日志记录”,但以一种结构化的方式进行,这样以后可以更方便地进行检查
  • 一个好主意可能是创建自定义异常来表示不同的爬网错误,例如:MissingRequiredFieldErrorInvalidFieldFormatError,您可以在爬网字段未通过验证的情况下引发这些异常。你知道吗

相关问题 更多 >