首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使web爬虫的解析器可维护

如何使web爬虫的解析器可维护
EN

Stack Overflow用户
提问于 2015-01-29 01:32:01
回答 2查看 98关注 0票数 0

我写了一个Ruby网络爬虫,从第三方网站中检索数据。我使用Nokogiri来提取基于特定CSS div和特定字段的信息(访问子节点和我提取的节点的元素)。

有时,第三方网站的结构会改变,从而破坏爬虫(element[1].children[2]可能需要更改为element[2].children[0])。

到目前为止,我有一个实用程序来打印我提取的节点的结构,它允许我在结构改变时快速修复解析器。我也有一个自动化的过程,控制它可以提取“一些”值。

我想知道是否有更优雅的方法来处理这个问题。如何编写易于维护的爬虫?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-29 01:36:52

您应该尽量使用网页的数据和元数据来查找您所关心的元素,而不是像您正在做的那样使用元素索引号。

"class“和"id”属性是一种很好的方法。Nokogiri具有XPath特性,可以方便地根据这些特性选择元素。如果这是不可能的,您可以尝试查看元素周围页面的内容,例如,如果您正在寻找一个权重,并且您知道它在一个表中,您可以搜索以"kg“结尾的字符串。如果不看到正在解析的文档,就很难给出超级特定的提示。

我建议您的爬虫检查正在检索的数据,并在数据看起来不对时引发异常(或显示警告)。

票数 1
EN

Stack Overflow用户

发布于 2015-01-29 03:28:05

使用CSS。例如,产品的价格几乎总是如下:

代码语言:javascript
运行
复制
page.at('#price, .price').text

该网站可以改变布局(主题),这将仍然工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28205579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档