【问题标题】:How to scrape a website with the socksify gem (proxy)如何使用 socksify gem(代理)抓取网站
【发布时间】:2014-03-12 05:58:02
【问题描述】:

我正在阅读 Rubyforge 上 socksify gem 的文档。我已经成功安装了 gem,并且我已经成功运行了这个记录在案的代码来测试我的本地实现是否可以复制它:

require 'socksify/http'
uri = URI.parse('http://rubyforge.org/')
Net::HTTP.SOCKSProxy('127.0.0.1', 9050).start(uri.host, uri.port) do |http|
  http.get(uri.path)
end
# => #<Net::HTTPOK 200 OK readbody=true>

但是我该怎么做?刮'http://google.com/',获取html内容?我希望用例如解析它像这样的Nokogiri:

Nokogiri::HTML(open("http://google.com/))

【问题讨论】:

    标签: ruby proxy socks tor net-http


    【解决方案1】:
     require 'socksify/http'
     http = Net::HTTP::SOCKSProxy(addr, port)
     html = http.get(URI('http://google.de'))
     html_doc = Nokogiri::HTML(html)
    

    【讨论】:

    • 谢谢@mattes。但是当我使用http = Net::HTTP::SOCKSProxy('127.0.0.1', 9050) 启动,然后运行html = http.get(URI('http://google.de'))我得到响应301 Moved
    • 那是正确的。 http://google.de 重定向到 http://www.google.de。有关详细信息,请参阅en.wikipedia.org/wiki/URL_redirection#HTTP_status_codes_3xx
    • 没错。谢谢!
    • @mattes 你知道如何使用这种方法设置用户代理吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多