[英]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.