从Ruby命令提示符启动浏览器窗口

时间:2013-10-17 20:07:44

标签: ruby search browser

我在下面有这个代码。我想要它做的是将我指定的每个搜索查询启动到浏览器窗口中,而不是列出当前编写的搜索结果。但我是初学者,很难找到相关文档。有可能吗?

问题是我将使用的search_criteria的实际列表实际上是40个术语长,我需要为数十个和几十个城市做这些 - 这就是为什么我希望自动化搜索过程。

如果无法将每个查询作为浏览器窗口(或浏览器窗口中的更好选项卡)启动,那么有一种方法可以指定每个URL,这些URL会以某种系统方式生成,以便Ruby从命令提示符调用以启动作为浏览器窗口?

require "google-search"

search_criteria = ["makers", "makerspaces", "fablabs", "smartlabs"]

#City name
search_1 = search_criteria.map do |noun|
    "#{noun} new york city"
end

#City acronym 1
search_2 = search_criteria.map do |noun|
    "#{noun} new york"
end

#City acronym 2
search_3 = search_criteria.map do |noun|
    "#{noun} nyc"
end


#Replace "search_1" for other acronyms
search_1.each do |query|
    puts "Just one moment please! I am searching for #{query}"
    Google::Search::Web.new do |search|
        search.query = query
        search.size = :large
    end.each { |item| puts item.title }
end

1 个答案:

答案 0 :(得分:0)

search_criteria = ["makers", "makerspaces", "fablabs", "smartlabs"]
names = ["new+york+city", "new+york", "nyc"]

query_strings = names.map do |name|
  "#{name}+#{search_criteria.join('+')}" 
end

urls = query_strings.map do |q|
  "google.com/search?q=" + q
end

cmd_line = urls.join(' ')

然后,您通过cmd_line电话将system()传递给Google Chrom可执行文件。在Mac OS X上,它将是这样的:

system("/Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --url #{cmd_line}")

Chrome会在新窗口中打开传递给它的字符串中的每个网址。 如果您使用的是Windows,则必须找到chrome.exe可执行文件所在的位置,而在Linux中,您只需找到chrome二进制文件来调用它。在...... Chrome --url #{cmd_line}")的最后一部分之前的所有内容都只是可执行文件的路径,它位于OS X上的“Google Chrome.app”容器中。