1

以下を実行すると、会社名が返されるはずです。xpath は firefox で機能し、会社名を返します。しかし、ノコギリでは、これは起こっていません.jsutは空の文字列を返します!

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
4

1 に答える 1

0

あなたのxpathは正しくありません:)

この部分は省略してくださいtbody。これはブラウザーによって生成されますが、nokogiri によって生成されるわけではありません。

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:また、フル パスではなく、選択したノードにいずれかまたは属性を使用すると、HTML ページの変更に対して xpath がより安定します。たとえば、使用できますclassid

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

または、CSSセレクターを使用するだけでも簡単です

doc.css("div.job_desc td")[1]
于 2009-12-20T11:59:18.207 に答える