2009-12-20 5 views
1

다음을 실행하면 회사 이름이 반환됩니다. xpath는 firefox에서 작동하며 회사 이름을 반환합니다. 그러나 nokogiri에서, 이것은 일어나지 않습니다, 그것은 빈 문자열을 반환합니다!nokogiri는 올바른 xpath가 주어진 경우 공백을 반환합니다.

require 'rubygems' 
require 'nokogiri' 
require 'open-uri' 

doc = Nokogiri::HTML(open('http://www.careerbuilder.com/JobSeeker/Jobs/JobDetails.aspx?IPath=QHK 
CV&ff=21&APath=2.21.0.0.0&job_did=J3G71D73BM9HCK1M84Z&cbRecursionCnt=1&cbsid=6d2aee1515ed404b8306d1a583592cd4-314600403-JQ-5')) 
companyname = doc.xpath("/html[1]/body[1]/div[1]/div[1]/form[1]/div[1]/table[1]/tbody[1]/tr[2]/td[1]/div[1]/table[1]/tbody[1]/tr[1]/td[1]/div[1]/div[2]/table[1]/tbody[1]/tr[1]/td[2]").to_s 

puts companyname 

답변

0

귀하의 XPath는 당신은 tbody 부분을 생략합니다 :)

가 해결되지 않으며,이 브라우저에 의해 발생하지만 노코 기리에 의해 하지입니다!

doc.xpath("/html[1]/body[1]/div[1]/div[1]/form[1]/div[1]/table[1]/tr[2]/td[1]/div[1]/table[1]/tr[1]/td[1]/div[1]/div[2]/table[1]/tr[1]/td[2]").to_s 

 

NB : 당신이 오히려 전체 경로보다, 선택된 노드에 어떤 class 또는 id 속성을 사용하는 경우 은 또한 당신이 XPath는 HTML 페이지의 변경에 대한 더 안정 될 것입니다. 예를 들어, 당신은

doc.xpath("//div[@class='job_desc'][1]/table[1]/tr[1]/td[2]") 

또는 간단한 그냥 CSS를 선택

doc.css("div.job_desc td")[1] 
+0

브라우저가 TBODY을 추가 왜 어떤 생각을 사용하여 사용할 수있다? – gpow

+0

HTML 표준은 브라우저가 그렇게해야 함을 정의합니다. http://stackoverflow.com/questions/938083/why-do-browsers-insert-tbody-element-into-table-elements – akuhn

관련 문제