我正在构建一个增强谷歌搜索结果的扩展程序。但是,我担心使用选择器.g
将在未来打破扩展程序,我不知道这个选择器是否保持更改,所有google的类似乎已经开始计算机生成了。
.g
可靠吗?或者它一直在改变。我应该寻找a
标签而是从那里开始。
答案 0 :(得分:2)
在选择如何定位元素时,类名和ID通常是首选。但是,并非每个类值都是在CSS选择器或XPath表达式中使用的好东西。例如,不应使用col-xs-8
或col-sm-offset-11
等引导类,因为它们是 layout - 而不是 data - 。类名称"产品"或" searchResult"如果提供的话,它们会更合适 - 这些类名称可以完美地描述基础元素。
回到你的例子。通常,像g
这样的类值远不是一个好的和可靠的定位器。它不可读,也不提供任何有关它代表的信息。但是,我们在这里谈论谷歌搜索结果页面。在这种情况下,我会说g
几乎是一个很好的定位技术,因为它在最近的将来会发生变化的可能性很小。
确保在您的scraper中实现了良好的错误处理和通知机制,以便您知道何时会发生更改并且代码会中断。
#search h3 > a
可能是一个更好的方法,因为它可以很容易地解释 - 你正在寻找标题,也是位于"搜索"容器
答案 1 :(得分:1)
要么会做你想要的,但找到一个标签会更稳定,并且不受谷歌所做的任何改变。
我怀疑谷歌会改变.g但你永远不会知道。如果您希望应用程序尽可能稳定,最好的方法是查找同时包含href的标记。因此,无论google发生什么变化,页面上的任何链接都会被删除。从那里你可能需要做一些额外的过滤,例如删除任何可能被拾取的广告或googles页眉和页脚的任何东西。