除非您预先了解站点的布局,否则没有从代码中确定这一点的好方法。
HTML 和 DHTML 允许您使用 CSS 或 JavaScript 在整个页面上定位元素,并且可以在页面加载后执行此操作,这是 Nokogiri 无法访问的。
在页面完全加载后,您可能可以使用其中一个 Watir API 来完成此操作,但是,您确实需要再次了解站点使用的布局。广告可以在 HTML 流中的任何位置并在加载后在页面中移动,并且可以动态加载真实内容,并且可以动态更改其位置和大小。因此,您不能指望内容在 HTML 中的位置是重要的,也不能指望内容在 HTML 中。JavaScript 或 CSS 不是你的朋友。
当我为网站分析编写蜘蛛和爬虫时,我不得不处理同样的问题。因为我知道要查看哪些站点,所以我会进行快速预扫描并找到我的地标标签,然后为它们编写一些 CSS 或 XPath 访问器。将带有 URL 的内容保存在数据库中,您可以快速浏览页面,准确抓取您想要的内容。
如果不了解页面布局,您的代码完全受页面布局人员的摆布,以及任何修改页面元素位置的东西。
基本上,您需要在代码中实现大脑内部的湿件,以及以图形方式呈现页面的能力,以便您的代码可以对其进行分析。当您作为用户在浏览器中查看页面时,您正在使用视觉和上下文线索来定位重要内容。所有这些上下文信息都是缺少的内容以及您需要编写的内容。