ruby - 拒绝将信息存储在文件中

标签 ruby mechanize

我有一个使用 Mechanize 搜索 Google 的工作程序,但是当该程序搜索 Google 时,它​​也会拉出看起来像 http://webcache.googleusercontent.com/ 的网站。 .

我想拒绝将该站点存储在文件中。所有站点的 URL 的结构都不同。

源代码:

require 'mechanize'

PATH = Dir.pwd
SEARCH = "test"

def info(input)
  puts "[INFO]#{input}"
end

def get_urls
  info("Searching for sites.")
  agent = Mechanize.new
  page = agent.get('http://www.google.com/')
  google_form = page.form('f')
  google_form.q = "#{SEARCH}"
  url = agent.submit(google_form, google_form.buttons.first)
  url.links.each do |link|
    if link.href.to_s =~ /url.q/
      str = link.href.to_s
      str_list = str.split(%r{=|&}) 
      urls_to_log = str_list[1]
      success("Site found: #{urls_to_log}")
      File.open("#{PATH}/temp/sites.txt", "a+") {|s| s.puts("#{urls_to_log}")}
    end
  end
  info("Sites dumped into #{PATH}/temp/sites.txt")
end

get_urls

文本文件:
http://www.speedtest.net/
http://webcache.googleusercontent.com/search%3Fhl%3Den%26biw%26bih%26q%3Dcache:M47_v0xF3m8J
http://www.speedtest.net/%252Btest%26gbv%3D1%26%26ct%3Dclnk
http://www.speedtest.net/results.php
http://www.speedtest.net/mobile/
http://www.speedtest.net/about.php
https://support.speedtest.net/
https://en.wikipedia.org/wiki/Test
http://webcache.googleusercontent.com/search%3Fhl%3Den%26biw%26bih%26q%3Dcache:R94CAo00wOYJ
https://en.wikipedia.org/wiki/Test%252Btest%26gbv%3D1%26%26ct%3Dclnk
https://www.test.com/
http://webcache.googleusercontent.com/search%3Fhl%3Den%26biw%26bih%26q%3Dcache:S92tylTr1V8J
https://www.test.com/%252Btest%26gbv%3D1%26%26ct%3Dclnk
https://www.speakeasy.net/speedtest/
http://webcache.googleusercontent.com/search%3Fhl%3Den%26biw%26bih%26q%3Dcache:sCEGhiP0qxEJ:https://www.speakeasy.net/speedtest/%252Btest%26gbv%3D1%26%26ct%3Dclnk
https://www.google.com/webmasters/tools/mobile-friendly/
http://webcache.googleusercontent.com/search%3Fhl%3Den%26biw%26bih%26q%3Dcache:WBvZnqZfQukJ:https://www.google.com/webmasters/tools/mobile-friendly/%252Btest%26gbv%3D1%26%26ct%3Dclnk
http://www.humanmetrics.com/cgi-win/jtypes2.asp
http://webcache.googleusercontent.com/search%3Fhl%3Den%26biw%26bih%26q%3Dcache:w_lAt3mgXcoJ:http://www.humanmetrics.com/cgi-win/jtypes2.asp%252Btest%26gbv%3D1%26%26ct%3Dclnk
http://speedtest.xfinity.com/
http://webcache.googleusercontent.com/search%3Fhl%3Den%26biw%26bih%26q%3Dcache:snNGJxOQROIJ:http://speedtest.xfinity.com/%252Btest%26gbv%3D1%26%26ct%3Dclnk
https://www.act.org/content/act/en/products-and-services/the-act/taking-the-test.html
http://webcache.googleusercontent.com/search%3Fhl%3Den%26biw%26bih%26q%3Dcache:1sMSoJBXydo
https://www.act.org/content/act/en/products-and-services/the-act/taking-the-test.html%252Btest%26gbv%3D1%26%26ct%3Dclnk
https://www.16personalities.com/free-personality-test
http://webcache.googleusercontent.com/search%3Fhl%3Den%26biw%26bih%26q%3Dcache:SQzntHUEffkJ
https://www.16personalities.com/free-personality-test%252Btest%26gbv%3D%26%26ct%3Dclnk
https://www.xamarin.com/test-cloud
http://webcache.googleusercontent.com/search%3Fhl%3Den%26biw%26bih%26q%3Dcache:ypEu7XAFM8QJ:
https://www.xamarin.com/test-cloud%252Btest%26gbv%3D1%26%26ct%3Dclnk

最佳答案

它现在有效。我遇到了 success('log') 的问题,我不知道为什么,但评论了它。

  str_list = str.split(%r{=|&}) 
  next if str_list[1].split('/')[2] == "webcache.googleusercontent.com"
  # success("Site found: #{urls_to_log}")
  File.open("#{PATH}/temp/sites.txt", "a+") {|s| s.puts("#{urls_to_log}")}

关于ruby - 拒绝将信息存储在文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36366084/

相关文章:

python - HTTP 错误 999 : Request denied

Ruby on Rails - 思考斯芬克斯问题

ruby - CocoaPods 权限被拒绝(Errno::EACCES - 权限被拒绝@dir_s_mkdir)

python - 网页抓取器返回元素列表

Python Mechanize/BeautifulSoup Scraping(迭代字典)

Python:如何修复此代码以使其在 Windows 上运行?

ruby-on-rails - 在 Windows 中开发 Ruby 和 Rails?或 Linux 虚拟机

ruby-on-rails - 在 ruby​​ 中使用 `include?` 来检查是否有东西在哈希中

ruby-on-rails - 为什么 Rails 会生成空模型?

python - 已安装 Mechanize,但 Python 找不到模块