2014-09-11 56 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