我写了一个Ruby网络爬虫,从第三方网站中检索数据。我使用Nokogiri来提取基于特定CSS div和特定字段的信息(访问子节点和我提取的节点的元素)。
有时,第三方网站的结构会改变,从而破坏爬虫(element[1].children[2]可能需要更改为element[2].children[0])。
到目前为止,我有一个实用程序来打印我提取的节点的结构,它允许我在结构改变时快速修复解析器。我也有一个自动化的过程,控制它可以提取“一些”值。
我想知道是否有更优雅的方法来处理这个问题。如何编写易于维护的爬虫?
发布于 2015-01-29 01:36:52
您应该尽量使用网页的数据和元数据来查找您所关心的元素,而不是像您正在做的那样使用元素索引号。
"class“和"id”属性是一种很好的方法。Nokogiri具有XPath特性,可以方便地根据这些特性选择元素。如果这是不可能的,您可以尝试查看元素周围页面的内容,例如,如果您正在寻找一个权重,并且您知道它在一个表中,您可以搜索以"kg“结尾的字符串。如果不看到正在解析的文档,就很难给出超级特定的提示。
我建议您的爬虫检查正在检索的数据,并在数据看起来不对时引发异常(或显示警告)。
发布于 2015-01-29 03:28:05
使用CSS。例如,产品的价格几乎总是如下:
page.at('#price, .price').text该网站可以改变布局(主题),这将仍然工作。
https://stackoverflow.com/questions/28205579
复制相似问题