2014-09-11 37 views
4

我如何獲得使用紅寶石機械化寶石的網站的所有鏈接? 機械化是否能做到像海葵寶石:如何使用機械寶石獲取網站的所有鏈接?

Anemone.crawl("https://www.google.com.vn/") do |anemone| 
    anemone.on_every_page do |page| 
    puts page.url 
    end 
end 

我在網絡爬蟲新手。提前致謝!

+0

你應該問一個關於在Ruby中抓取工具的更一般的問題,我也對答案感興趣。 – 2014-09-11 07:31:10

+0

@BorisStitnicky謝謝你回答我。因爲海葵不再被開發。所以我想改變使用機械抓取。 – 1Rhino 2014-09-11 07:36:00

+0

我沒有回答,我只評論。也許除了機械化之外還有其他工具。我會去尋求更一般的問題。 – 2014-09-11 07:52:46

回答

1

Mechanize很簡單,我建議你閱讀文檔。你可以從Ruby BastardBook開始。

要獲得從機械化頁面所有鏈接試試這個:

require 'mechanize' 

agent = Mechanize.new 
page = agent.get("http://example.com") 
page.links.each {|link| puts "#{link.text} => #{link.href}"} 

的代碼是清楚的,我認爲。 page是一個機械化::頁面對象,用於存儲檢索到的頁面的全部內容。 Mechanize :: Page有links方法。

機械化是非常強大的,但請記住,如果你想做沒有任何與網站互動使用Nokogiri刮。機械化使用Nokogiri廢料網,所以只能使用Nokogiri刮。

+1

謝謝@monktools。機械化對於交互網頁內容非常有用。但是,它不用於獲取網站的多級鏈接。 – 1Rhino 2014-09-12 02:54:42

+0

Nokogiri不會抓取網站,它是一個HTML/XML解析器;刮掉你需要使用HTTP客戶端來檢索內容,通常這會是OpenURI但存在很多其他客戶端。 Mechanize有很多Nokogiri沒有的輔助方法,但是Nokogiri的優勢在於它更加靈活,可以讓我們操縱一個頁面或從中提取信息,這是我們無法直接從Mechanize獲得的。 – 2015-12-17 22:49:25

+0

我不明白你最後的段落,機械化需要什麼樣的相互作用? – ShadSterling 2016-11-19 18:14:36

相關問題