【问题标题】:Using cURL command with Ruby?在 Ruby 中使用 cURL 命令?
【发布时间】:2014-05-18 19:54:11
【问题描述】:

想通过 Twitter API 抓取一堆推文,作为输出我得到 cURL 命令,类似的东西

curl --get 'https://api.twitter.com/1.1/search/tweets.json' --data 'q=football' --header      'Authorization: OAuth oauth_consumer_key="**hidden**", oauth_nonce="**hidden**", oauth_signature="**hidden**", oauth_signature_method="HMAC-SHA1", oauth_timestamp="**hidden**", oauth_token="**hidden**", oauth_version="1.0"' --verbose

我的问题,有没有办法在 Ruby 脚本中使用这个命令来抓取推文?

【问题讨论】:

标签: ruby api twitter


【解决方案1】:

使用此处提供的 Twitter gem http://rdoc.info/gems/twitter 和以下代码,您可以从 ruby​​ 脚本中获取所有推文。

require 'twitter'

client = Twitter::REST::Client.new do |config|
    config.consumer_key        ="hidden"
    config.consumer_secret     ="hidden"
    config.access_token        ="hidden"
    config.access_token_secret ="hidden"
end

client.search("football").collect do |tweet|
    puts tweet.text
end

【讨论】:

  • 相信我,你让我的生活变得更好 :) 最后一件事,有没有办法提取,比如说,大约数千条推文,而不是现有的(大约数百条)?非常感谢!
  • 使用max_id参数和上一条tweet的id可以得到下百个batch。以下答案应该会有所帮助stackoverflow.com/a/15734833/133197
【解决方案2】:

你可以用反引号把它包装起来,并像从任何 unix(like) 命令一样获取输出

脚本.rb

cmd=`echo 'hello world'`
puts cmd

输出:你好世界

【讨论】:

    【解决方案3】:

    按照@Hunter McMillen 的建议,最好使用现有的API,但如果您想自己执行http-requests,可以使用net/http lib。下面的例子:

    require 'net/http'
    uri = URI('http://example.com/index.html')
    params = { :limit => 10, :page => 3 }
    uri.query = URI.encode_www_form(params)
    
    res = Net::HTTP.get_response(uri)
    puts res.body if res.is_a?(Net::HTTPSuccess)
    

    Here is the info on how to set headers.

    【讨论】:

      猜你喜欢
      • 2012-10-12
      • 2014-07-26
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 2023-02-11
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      相关资源
      最近更新 更多