2013-12-18 77 views
0

所以我有一個方法,當我通過一個直接的URL(見下面的代碼)方法返回就好。當我在URL中使用#{}來傳遞在Craigslist中使用不同位置的可能性時,它會拋出底部顯示的錯誤。我想我的問題是雙重的:如何使用字符串插值將網址傳遞到Nokogiri?

  1. 爲什麼Nokogiri不允許我打開它?
  2. 我可以改變它接受網址嗎?

代碼:

def get_post_date(listing_url) 
    # This method takes in a page and returns a date hopefully in a date format 
    # but right now text 
    listing = Nokogiri::HTML(open(listing_url)).css("p") 
    setter = "" 
    for element in listing 
    if element.css('time').text!=""&&setter=="" 
     post_time = "poop" # Time.parse(element.css('time').text) 
     return "poop" 
    end 
    end 
end 

location = "sfbay" 
# THIS throws an error 
p get_post_date("#{location}.craigslist.org/sfc/vac/4248712420.html") 
# THIS works 
p get_post_date("sfbay.craigslist.org/sfc/vac/4248712420.html") 

錯誤:

 
c:\>ruby cljobs.rb C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:35:in 
`initialize': No such file or direct ory - 
sfbay.craigslist.org/sfc/vac/4248712420.html (Errno::ENOENT) 
     from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:35:in `open' 
     from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:35:in `open' 
     from cljobs.rb:7:in `get_post_date' 
     from cljobs.rb:40:in `' 

回答

2

爲了打開需要導入OpenURI的URL。否則nokogiri會嘗試打開一個文件。

require 'open-uri' 
listing = Nokogiri::HTML(open(listing_url)) 
+0

在我的系統上,我還需要在URL的開頭添加'http://'。 –

+0

我道歉......這是在文件中完成的,但我沒有把它放在描述中。另外,我需要nokogiri。再一次,如果我傳入直接url(不帶http://),則該方法按預期工作,但如果使用字符串插值傳遞它,則不起作用。 – notthehoff

+0

有趣......好吧,我以爲我加了http://以前,但也許我沒有!有用 – notthehoff

相關問題