如何加载网页并在Ruby中搜索单词

如何在Ruby中加载网页并搜索单词?

这是一个完整的解决方案:

require 'open-uri' if open('http://example.com/').read =~ /searchword/ # do something end 

对于像这样简单的东西,我宁愿写几行代码而不是使用完整的gem。 这是我要做的:

 require 'net/http' # let's take the url of this page uri = 'http://stackoverflow.com/questions/1878891/how-to-load-a-web-page-and-search-for-a-word-in-ruby' response = Net::HTTP.get_response(URI.parse(uri)) # => # # match the word Ruby /Ruby/.match(response.body) # => # 

如果我需要做更多的事情,我可以去使用gem的路径,我需要实现一些已经在其中一个gem中完成的算法

我建议使用Nokogiri或hpricot来打开和解析HTML文档。 如果您需要一些不需要解析HTML的简单内容,您可以使用内置于大多数ruby发行版中的open-uri库。 如果需要更复杂的发布表单(或登录),您可以选择使用Mechanize。

Nokogiri可能是_why之后的首选解决方案,但两者都很简单:

 require 'nokogiri' require 'open-uri' doc = Nokogiri(open("http://www.example.com")) if doc.inner_text.match(/someword/) puts "got it" end 

两者都允许您使用类似xpath的查询或CSS选择器进行搜索,这允许您使用class = foo从所有div中获取项目。

幸运的是,在open-uri,nokogiri和mechanize之间移动并没有太大的飞跃,因此请使用满足您需求的第一个,并在您意识到需要其他库之一的function后修改代码。

您也可以使用mechanize gem,类似于此。

 require 'rubygems' require 'mechanize' mech = WWW::Mechanize.new.get('http://example.com') do |page| if page.body =~ /mysearchregex/ puts "found it" end end