【发布时间】:2014-01-17 05:00:09
【问题描述】:
我正在尝试使用 Nokogiri 从 Google 主页获取自动更正的拼写。
例如,如果我输入“hw did”并且正确的拼写是“how did”,我必须得到正确的拼写。
我尝试使用 xpath 和 css 方法,但在这两种情况下,我都得到相同的空数组。
我使用 FireBug 获得了 XPath 和 CSS 路径。
这是我的 Nokogiri 代码:
@requ=params[:search]
@requ_url=@requ.gsub(" ","+") //to encode the url(if user inputs space than it should be convet into + )
@doc=Nokogiri::HTML(open("https://www.google.co.in/search?q=#{@requ_url}"))
binding.pry
这是我的 XPath 和 CSS 选择器:
使用 XPath:
pry(#<SearchController>)> @doc.xpath("/html/body/div[5]/div[2]/div[6]/div/div[4]/div/div/div[2]/div/p/a").inspect
=> "[]"
使用 CSS:
pry(#<SearchController>)> @doc.css('html body#gsr.srp div#main div#cnt.mdm div.mw div#rcnt div.col div#center_col div#taw div div.med p.ssp a.spell').inner_text()
=> ""
【问题讨论】:
-
您可能使用了错误的 xpath,firebug 可能已经修改了 html 尝试以下,虽然未经测试,但从 chrome 开发人员工具
//*[@id="gsr"]/table/tbody/tr/td[2]/table/tbody/tr[1]/td/div/table/tbody/tr/td[1]/span复制而来,顺便说一句,您不应该依赖谷歌来做这样的事情或者以您的方式,他们明天可以在不通知您的情况下更改他们的设计 -
为什么你的例子中有
<br>标签?是你添加的,还是从一些 HTML 源中复制的? -
@tin man,不,我的示例中没有任何 br 标签,这里只是为了格式化我在 stackoverflow 上的问题。
-
啊。它们不适用于代码/预格式化。
标签: ruby-on-rails ruby css-selectors web-scraping nokogiri