ruby-on-rails - Nokogiri XML 和循环不起作用

标签 ruby-on-rails ruby xml loops nokogiri

我制作了一个脚本来从 indeed.com API 获取数据。我收到回复,但它首先返回每个公司名称,然后在一个 block 中返回每个职位。

我现在得到的:

ecutive KingswoodSales ExecutiveTrainee Van Sales ProfessionalJunior Broker (Opener) - Hong Kong - flights & accomodationTrainee Sales ExecutiveSales AssociateSales Executive
Mercedes-BenzMercedes-BenzMercedes-BenzSwinton GroupPorscheMercedes-BenzElite Sales RecruitmentImperial TobaccoThreeMercedes-Benz

我尝试添加每个 do 循环,但现在它是空白的,我没有收到错误。

我的脚本:

require 'nokogiri'
require 'open-uri'

xmls = Nokogiri::XML(open('http://api.indeed.com/ads/apisearch?publisher=apikey&q=sales&l=&sort=&radius=40&st=&jt=&start=&limit=&fromage=&filter=&co=uk&v=2')) 

xmls.each do |xml|    
  jobtitle = xml.search('jobtitle').text
  company  = xml.search('company').text

  puts jobtitle
  puts company 
end

我的目标是让我的数据像这样:

Company 1
company name
company jobtitle

Company 2
company name
company jobtitle

Company 3
company name
company jobtitle 
...

这是 XML 响应:

<?xml version="1.0" encoding="UTF-8" ?>
<response version="2">
    <query>java</query>
    <location>austin, tx</location>
    <dupefilter>true</dupefilter>
    <highlight>false</highlight>
    <totalresults>547</totalresults>
    <start>1</start>
    <end>10</end>
    <radius>25</radius>
    <pageNumber>0</pageNumber>
    <results>
        <result>
            <jobtitle>Java Developer</jobtitle>
            <company>XYZ Corp.</company>
            <city>Austin</city>
            <state>TX</state>
            <country>US</country>
            <formattedLocation>Austin, TX</formattedLocation>
            <source>Dice</source>
            <date>Mon, 02 Aug 2010 16:21:00 GMT</date>
            <snippet>looking for an object-oriented Java Developer... Java Servlets, HTML, JavaScript,
            AJAX, Struts, Struts2, JSF) desirable. Familiarity with Tomcat and the Java...</snippet>
            <url>http://www.indeed.com/viewjob?jk=12345&indpubnum=8343699265155203</url>
            <onmousedown>indeed_clk(this,'0000');</onmousedown>
            <latitude>30.27127</latitude>
            <longitude>-97.74103</longitude>
            <jobkey>12345</jobkey>
            <sponsored>false</sponsored>
            <expired>false</expired>
            <formattedLocationFull>Austin, TX</formattedLocationFull>
            <formattedRelativeTime>11 hours ago</formattedRelativeTime>
        </result>
        ...
    </results>
</response>

最佳答案

您可以为此使用 css 选择器。

xmls = Nokogiri::XML(open('......')) 

xmls.css('results result').each do |xml|
  jobtitle = xml.css('jobtitle').text
  company = xml.css('company').text
  puts jobtitle
  puts company 
end

关于ruby-on-rails - Nokogiri XML 和循环不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31404912/

相关文章:

ruby-on-rails - Rails 3 的最佳验证码库

Ruby - 如何重新定义类方法?

ruby-on-rails - 如何在 Rails 的链接中添加附加标签?

ruby - 了解 Ruby 中的循环迭代

ruby-on-rails - 是否有 Rails 4 向后移植库?

ruby-on-rails - 面向用户的作业的后台进程?

ruby-on-rails - 在 Rails 中创建制表符分隔的 ASCII 文件

java - 提取个人 bibo :Articles from RDF document

json - 如何将所有解码数据写入一个 JSON 文件?

android - 找不到与给定名称匹配的资源