我需要从网页中解析表格。我在使用Ruby和Nokogiri之前做过这个,但这次我的方法不起作用。这就是我正在做的事情:
response = RestClient.get "http://www.webpage.com?page=0"
doc = Nokogiri::HTML(response.body,nil,'utf-8')
doc.remove_namespaces!
table = doc.xpath(".//*[@id='contsinderecha']/form/table/tbody/tr[4]/td/table/tbody/tr[5]/td/table")
table
只是一个空数组。答案很好,如果我做了put response.body
我得到了网页的正文。
另外,要获得XPath我正在使用firebug。
对可能发生的事情有所了解?
答案 0 :(得分:6)
问题的解决方案是删除xPath中的tbody
部分,如“Why does this Nokogiri XPath have a null return?”中所述。
Firefox为您生成了tbody
元素,这就是它们出现在Firefox的xPath中的原因,但它们不是原始页面源的一部分。
尝试以下方法:
response = RestClient.get "http://www.buenosaires.gob.ar/areas/seguridad_justicia/seguridad_urbana/estaciones_servicio/buscador.php?&pag=0"
doc = Nokogiri::HTML(response.body,nil,'utf-8')
doc.remove_namespaces!
table = doc.xpath(".//*[@id='contsinderecha']/form/table/tr[4]/td/table/tr[5]/td/table")
答案 1 :(得分:3)
获得该表的正确方法是:
doc.at('table.contenido')