私はIndeed Ruby APIとやりとりするための小さなプログラムを書いた。APIからハッシュの配列から返されたデータを抽出する方法
私は1つのジョブタイトルを印刷できますが、すべてをループしたいと思います。
ここコードです:
require 'nokogiri'
require 'indeed-ruby'
client = Indeed::Client.new ("PUBLISHER_KEY_GOES_HERE")
params = {
:q => 'python',
:l => 'vancouver',
:userip => '1.2.3.4',
:useragent => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2)',
:jobkeys => ["JOB_KEY_A", "JOB_KEY_B"]
}
data = client.search(params)
# loop through all results and print the job title
data.each do |d|
puts d["results"]["jobtitle"]
end
each
ループに戻り、このエラーメッセージ:
i.rb:23:in `[]': no implicit conversion of String into Integer (TypeError)
from i.rb:23:in `block in <main>'
from i.rb:22:in `each'
from i.rb:22:in `<main>'
私は、このエラーメッセージは、私が文字列を入れてい整数を見つけるためにしようとしていると言っていると仮定["results"]
または["jobtitle"]
のいずれかです。この行は動作し、役職印刷し
:
puts data["results"][0]["jobtitle"]
これは私が結果のハッシュの0番目の要素にアクセスして、jobtitle属性にアクセスすることができます意味を。
私はこれと印刷3つのジョブのタイトルのように実行するループにしたい:私はそれは整数を期待していた場合、ループに[i]
カウンターを置くするかどうかはわかりません
puts data["results"][0]["jobtitle"]
puts data["results"][1]["jobtitle"]
puts data["results"][2]["jobtitle"]
。ここで
は、データがIndeepのAPIから戻ってくるように見えるものです:
{"version"=>2,
"query"=>"python",
"location"=>"vancouver",
"paginationPayload"=>"",
"radius"=>25,
"dupefilter"=>true,
"highlight"=>true,
"totalResults"=>483,
"start"=>1,
"end"=>10,
"pageNumber"=>0,
"results"=>
[{"jobtitle"=>"Junior Software Developer",
"company"=>"LaunchCode",
"city"=>"Portland",
"state"=>"OR",
"country"=>"US",
"formattedLocation"=>"Portland, OR",
"source"=>"LaunchCode",
"date"=>"Fri, 03 Feb 2017 04:10:27 GMT",
"snippet"=>
"Familiarity with an at least one imperative (Java, JavaScript, PHP, C#, Objective-C, C/C++, <b>Python</b>, Ruby, etc.). Don’t have a CS degree?...",
"url"=>
"http://www.indeed.com/viewjob?jk=9f75f0ea8825e3a8&qd=X0KuMlb--hp3Z0o2UU7dJOXoIlOcgm8VSZO61KKa0UOtGpLfFk1WY111OhfFWzZjMBRv9LrdGhB8olLNQGabmQRFit3-lRPP9j12GNvnf88&indpubnum=4334069173238194&atk=1b87s51b1a0kqb7s",
"onmousedown"=>"indeed_clk(this,'782');",
"jobkey"=>"9f75f0ea8825e3a8",
"sponsored"=>false,
"expired"=>false,
"indeedApply"=>false,
"formattedLocationFull"=>"Portland, OR",
"formattedRelativeTime"=>"2 days ago",
"stations"=>""},
実際にAPIからの応答がハッシュですが、「結果」キーの値が配列であるように見えますハッシュの内側。
ウルサスから以下の応答が動作:
これも働いていた:ここ
for i in 1...10
puts data["results"][i]["jobtitle"]
end
が出力されますので、
Junior Software Developer
Data Scientist
Python Developer
Python Automation Developer - Hillsboro, OR
Computer Vision Engineer
Python Web Engineer
EMS Network Applications Engineer II
Software Engineer
Python Developer (full-stack)
Electrical Engineer, EMS Network Applications
ようこそ何かを行うことができます。 「[mcve]」をお読みください。サンプルデータは構文的に正しくないため、問題を実証するために必要な最小限に減らす必要があります。テキストに「編集」タグや「更新」タグを使用しないでください。まるでそこにあったかのように体に変化を組み込む。私たちが知る必要がある場合、何かがいつどこで変わったかを伝えることができます。 –