2011-07-04 45 views
1

我在這裏要做的是比較sqlite dbs中的2個字符串,我想說我有點難住。該計劃的基本目標是用戶請求抓取網站。然後,爬蟲將網站分解爲作業或鏈接。我試圖避免重複的抓取和請求說在Sqlite3紅寶石字符串比較db's

if(request is already in jobs list) 
    { 
    do nothing 
    } 
else 
    { 
    Anemone.crawl(....) 

銀蓮花是順便說一句ruby的網絡蜘蛛框架。

所以if語句中的比較如下。

if(@[email protected]_s) 

     puts 'TEST TEST TEST' 
     puts 'Request is already detected in job list' 

@allJobs和@allRequests均只有SELECT * FROM Jobs.Requests

@allJobs = Job.all 
@allRequests = Request.all 

的比較似乎是失敗的,它會創建重複沒有問題。有沒有人有任何想法?


在側面說明。如何從.all變量中刪除一個字段。

allJobs.drop「where url = myurl.com」?

回答

0

所以這是一次冒險。爲了別人碰到同樣的問題。按照這些說明。

如果你有一個對象,做一個YAML轉儲

puts YAML::dump(@requestToUpdate) 
puts YAML::dump(@jobToCompare) 

並確保它不是零。這是第一個大的線索。 requestToUpdate被完全填充,而jobToCompare不是。

有點sloothing左右,我發現後,有更好的方法來指定哪些那些2個對象是不是

@Object.first.url 

替換爲:

@requestToUpdate = Request.find_by_url(@usersRequestedSite) 
@jobToCompare = Job.find_by_url("http://"[email protected]+"/") 

URL只是一串PARAM我的對象,可以交換其他任何東西。添加的http和/是爲了匹配它們之間的差異。

此後,它只是一個以同樣的方式

else if (("http://"[email protected]+"/").eql? @jobToCompare.url) 

瞧比較字符串的問題。我有我的第一個字符串比較。我永遠不會忘記我的第一次。 :£