require 'hpricot'
class Gdoc
def self.get id
text = Rails.cache.fetch("doc-#{id}", :expires_in => 15.minutes) do
url = URI.parse('http://docs.google.com')
res = Net::HTTP.start(url.host, url.port) do |http|
http.get("/Doc?id=#{id}")
end
text = res.body
doc = Hpricot(text)
body = (doc/'body')
body.search("#google-view-footer").remove
body.search("script").remove
body.inner_html.gsub('File?id=', 'http://docs.google.com/File?id=')
end
text
end
def self.index
docs = Rails.cache.fetch("docs", :expires_in => 15.minutes) do
raw = self.get GDOC_INDEX
doc = Hpricot(raw)
docs = []
doc.search('//a').each do |link|
docs << {:id => link['href'].gsub('View?docid=',''), :name => link.innerText, :path => link.innerText.downcase.gsub(' ','-')}
end
docs
end
docs
end
end
Комментарии, думаю, излишни.
использование Google Docs в приложении
Posted on August 25, 2009
Недавно мне понадобилось в один сервис вставить несколько страниц текста, поскольку все эти тексты были уже в виде google docs, то я написал простой класс который их получает и показывает:
Проверка количества проиндексированных страниц:
Posted on March 27, 2009
Разные поисковые машины по разному индексируют сайт. Для того, что-бы узнать сколько страниц проиндексировал поисковик существуют различные способы.
Недавно мой блог был побанен ндексом (до сих пор не понимаю за что) и после написания пары писем в саппорт я решил написать простой скрипт для отслеживания того, появились ли в выдачи страницы с моего блога:
Недавно мой блог был побанен ндексом (до сих пор не понимаю за что) и после написания пары писем в саппорт я решил написать простой скрипт для отслеживания того, появились ли в выдачи страницы с моего блога:
require 'hpricot'
require 'mechanize'
class YaChecker
class << self
def get_pages(url)
url = "http://m.yandex.ru/search?query=host%3D%22www.#{url}%22%20|%20host%3D%22#{url}%22"
agent = WWW::Mechanize.new
agent.user_agent_alias = 'Mac Safari'
utf_page = agent.get_file(url)
doc = Hpricot(utf_page)
pages = doc.search("//div[@class='result-txt']")
result = pages[0]
return 0 if result.inner_text == "\nИскомая комбинация слов нигде не встречается\n"
return result.inner_text.gsub(/Нашлось/,'').to_i
end
end
end
Воодушевившись результатом я написал так-же проверялку для Google:
require 'hpricot'
require 'mechanize'
class GooChecker
class << self
def get_pages(url)
url = "http://www.google.ru/search?hl=ru&q=site%3A#{url}+|+site%3Awww.#{url}&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq="
agent = WWW::Mechanize.new
agent.user_agent_alias = 'Mac Safari'
utf_page = agent.get_file(url)
doc = Hpricot(utf_page)
pages = doc.search("//div[@id='ssb']/p/b[3]")
return 0 if pages[0].nil?
pages[0].innerText.to_i
end
end
end
Если кому понадобится, то пользуйтесь на здоровье