簡體   English   中英

Rails Webscraper可在控制台中工作,但不能在服務器中工作

[英]Rails webscraper works in console, but not server

我一直在嘗試一些方法並在控制台中對其進行測試。 問題是在服務器上運行時發生錯誤。 具體來說,下面的第一個方法會觸發此NoMethod錯誤:

undefined method `text' for nil:NilClass

這是代碼。 來自webpage.rb文件,其中包含一個uri列。

def download_page_title
  page_as_xml.at_css('title').text
end

def page_as_xml
  page_as_xml ||= Nokogiri::HTML(open(page_uri))
end

def page_uri
  base_uri = Site.find_by_id(self.site_id).homepage #always has "/" at end
  if self.url == base_uri
    page_uri = base_uri
  else
    page_uri = "#{base_uri}#{self.url}"
  end
end

知道我在做什么錯嗎? 還有,為什么在控制台中運行順利但在服務器上出軌了?

編輯:這是我在控制台中執行的示例。

1.9.3p194 :262 > a = Webpage.new( url: "http://www.cnn.com/", site_id:165)
 => #<Webpage id: nil, url: "http://www.cnn.com/", site_id: 165, created_at: nil, updated_at: nil, title: nil> 
1.9.3p194 :263 > a.download_page_title
  Site Load (0.3ms)  SELECT "sites".* FROM "sites" WHERE "sites"."id" = 165 LIMIT 1
 => "CNN.com - Breaking News, U.S., World, Weather, Entertainment & Video News" 

這意味着page_as_xml.at_css返回nil ,然后您嘗試在該nil對象上調用.text

因此,找出為什么它返回nil 例如,您正在下載的頁面是否沒有指定可通過CSS選擇器訪問的title標簽? 頁面是空白還是沒有返回結果? 它是否返回錯誤狀態(不在2xx HTTP狀態范圍內)?

換句話說,您用於測試的頁面與服務器實際獲取的頁面之間可能存在上游差異。

您可能需要處理(或引發異常,或記錄/報告)從調用page_as_xml.at_css返回nil頁面-這實際上取決於您的軟件需要執行的操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM