Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 使用xpath的Nokogiri解析返回空字符串_Ruby On Rails 4_Xpath_Nokogiri_Httparty - Fatal编程技术网

Ruby on rails 4 使用xpath的Nokogiri解析返回空字符串

Ruby on rails 4 使用xpath的Nokogiri解析返回空字符串,ruby-on-rails-4,xpath,nokogiri,httparty,Ruby On Rails 4,Xpath,Nokogiri,Httparty,我有以下HTML: <div> <table> <tr> <td> <div class="w135"> <div style="float: left; padding-right: 10px;" class="imageThumbnail playerDiv"> <a href="/sport/tennis/2014/10/djokovic-through-woznia

我有以下HTML:

<div>
 <table>
  <tr>
   <td>

    <div class="w135">

     <div style="float: left; padding-right: 10px;" class="imageThumbnail playerDiv">
      <a href="/sport/tennis/2014/10/djokovic-through-wozniacki-out-china-open-2014101114115427766.html" id="ctl00_ctl00_DataList1_ctl00_Thumbnail1_lnkImage10" target="_parent">
       <img src="/mritems/imagecache/89/135/mritems/images/2014/10/1/2014101114447491734_20.jpg" id="ctl00_ctl00_DataList1_ctl00_Thumbnail1_imgSmall10" border="0" class="imageThumbnail">
            </a>
     </div>


    </div>
   </td>
  </tr>
 </table>
</div>
代码如下:

@request = HTTParty.get(url)

@html = Nokogiri::HTML(@request.body)

@html.css(".w135")[0].map do |item|

    url = item.at_css("div.playerDiv a")

    puts url.inspect
end   
我真的不确定问题是什么,并且已经尝试解决了一段时间。错误发生在这一行
url=item.at_css(“div.playerDiv a”)

任何建议都将不胜感激


谢谢

我会用以下方法来做:

require 'nokogiri'

doc = Nokogiri::HTML(<<EOT)
<div>
 <table>
  <tr>
   <td>

    <div class="w135">

     <div style="float: left; padding-right: 10px;" class="imageThumbnail playerDiv">
      <a href="/sport/tennis/2014/10/djokovic-through-wozniacki-out-china-open-2014101114115427766.html" id="ctl00_ctl00_DataList1_ctl00_Thumbnail1_lnkImage10" target="_parent">
       <img src="/mritems/imagecache/89/135/mritems/images/2014/10/1/2014101114447491734_20.jpg" id="ctl00_ctl00_DataList1_ctl00_Thumbnail1_imgSmall10" border="0" class="imageThumbnail">
            </a>
     </div>


    </div>
   </td>
  </tr>
 </table>
</div>
EOT

puts doc.search('.w135 div.playerDiv a').map(&:inspect)

令人烦恼的是,在刚刚发布之后,我通过将范围从
[0]
更改为实际范围(例如
[0..1]
)解决了这个问题。愚蠢的错误。谢谢
require 'nokogiri'

doc = Nokogiri::HTML(<<EOT)
<div>
 <table>
  <tr>
   <td>

    <div class="w135">

     <div style="float: left; padding-right: 10px;" class="imageThumbnail playerDiv">
      <a href="/sport/tennis/2014/10/djokovic-through-wozniacki-out-china-open-2014101114115427766.html" id="ctl00_ctl00_DataList1_ctl00_Thumbnail1_lnkImage10" target="_parent">
       <img src="/mritems/imagecache/89/135/mritems/images/2014/10/1/2014101114447491734_20.jpg" id="ctl00_ctl00_DataList1_ctl00_Thumbnail1_imgSmall10" border="0" class="imageThumbnail">
            </a>
     </div>


    </div>
   </td>
  </tr>
 </table>
</div>
EOT

puts doc.search('.w135 div.playerDiv a').map(&:inspect)
# >> #<Nokogiri::XML::Element:0x3ff0918b132c name="a" attributes=[#<Nokogiri::XML::Attr:0x3ff0918b1250 name="href" value="/sport/tennis/2014/10/djokovic-through-wozniacki-out-china-open-2014101114115427766.html">, #<Nokogiri::XML::Attr:0x3ff0918b123c name="id" value="ctl00_ctl00_DataList1_ctl00_Thumbnail1_lnkImage10">, #<Nokogiri::XML::Attr:0x3ff0918b1228 name="target" value="_parent">] children=[#<Nokogiri::XML::Text:0x3ff0918a5b6c "\n       ">, #<Nokogiri::XML::Element:0x3ff0918a5360 name="img" attributes=[#<Nokogiri::XML::Attr:0x3ff0918a4d20 name="src" value="/mritems/imagecache/89/135/mritems/images/2014/10/1/2014101114447491734_20.jpg">, #<Nokogiri::XML::Attr:0x3ff0918a4cbc name="id" value="ctl00_ctl00_DataList1_ctl00_Thumbnail1_imgSmall10">, #<Nokogiri::XML::Attr:0x3ff0918a4b90 name="border" value="0">, #<Nokogiri::XML::Attr:0x3ff0918a4a28 name="class" value="imageThumbnail">]>, #<Nokogiri::XML::Text:0x3ff091871920 "\n            ">]>
puts doc.search('.w135 div.playerDiv a').map{ |n| n['href'] }
# >> /sport/tennis/2014/10/djokovic-through-wozniacki-out-china-open-2014101114115427766.html