如何加载网页并在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
- Rails 3按顺序排序has_many:通过
- 新Rails 3.2.8项目出错 – “require”:无法加载此类文件 – sqlite3 / sqlite3_native(LoadError)
- gem install kgio ERROR
- 是否可以使用OmniAuth获取Gmail oauth或xauth令牌?
- Ruby / Rails / Rspec – ActiveRecord :: AssociationTypeMismatch:
- rspec失败错误:假设错误响应`false?`
- 如何正确摧毁一个阶级
- 在Static_pages中的Sass :: SyntaxError #home Hatrl的tuorial
- 引用CSV输出中的所有字段