如何通过Ruby API获取Tumblr热门页面的帖子URL及详情?
用Ruby获取Tumblr热门帖子的URL和详细信息
嘿,我来帮你搞定用Ruby获取Tumblr热门页面帖子的事儿!下面给你两种可行的方法,你可以根据需求选:
方法一:用Tumblr官方API(推荐)
官方API是最稳定合规的方式,毕竟是Tumblr自己提供的接口,不会轻易失效。
步骤1:准备开发者账号和密钥
首先得去Tumblr开发者平台注册账号,创建一个应用,拿到你的consumer_key、consumer_secret这些密钥——这是调用API的通行证哈。
步骤2:用Ruby的tumblr_client gem
这个gem专门封装了Tumblr API的调用,用起来超方便。先安装它:
gem install tumblr_client
步骤3:写代码获取热门内容
下面是个简单的示例代码,能拿到热门帖子的URL和基本信息:
require 'tumblr_client' # 配置客户端,替换成你的密钥 client = Tumblr::Client.new do |config| config.consumer_key = '你的consumer_key' config.consumer_secret = '你的consumer_secret' end # 获取热门帖子数据 trending_posts = client.explore('trending', limit: 20) # 提取并打印信息 trending_posts['posts'].each do |post| puts "帖子URL: #{post['post_url']}" puts "标题/内容摘要: #{post['title'] || post['summary']}" puts "发布者: #{post['blog_name']}" puts "-------------------------" end
API返回的字段很丰富,除了上面的,你还能拿到点赞数、标签、发布时间这些,具体可以看Tumblr的官方API文档。
方法二:网页抓取(谨慎使用)
如果官方API满足不了你的需求,比如需要页面上的一些额外元素,也可以试试网页抓取,但要注意:
- 先看Tumblr的
robots.txt,确认允许抓取热门页面 - 遵守Tumblr的服务条款,别频繁请求给服务器添负担
步骤1:安装所需gem
我们用httparty发请求,nokogiri解析HTML:
gem install httparty nokogiri
步骤2:写抓取代码
示例代码如下(注意:Tumblr的页面结构可能会变,代码可能需要定期调整):
require 'httparty' require 'nokogiri' # 发送请求获取热门页面 url = 'https://www.tumblr.com/explore/trending' response = HTTParty.get(url, headers: { 'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' }) # 解析HTML doc = Nokogiri::HTML(response.body) # 提取帖子信息(这里的选择器是基于当前页面结构的,可能会变) doc.css('div.post-card').each do |card| post_url = card.at_css('a.post-card__content-link')['href'] # 处理相对URL,补全域名 post_url = "https://www.tumblr.com#{post_url}" unless post_url.start_with?('http') post_title = card.at_css('h3.post-card__title')&.text&.strip || '无标题' post_summary = card.at_css('p.post-card__content')&.text&.strip || '无摘要' puts "帖子URL: #{post_url}" puts "标题: #{post_title}" puts "摘要: #{post_summary}" puts "-------------------------" end
要是发现抓取不到内容了,大概率是Tumblr改了页面结构,这时候就得用浏览器的开发者工具重新找元素选择器啦。
内容的提问来源于stack exchange,提问作者john zhang
相关产品推荐
相关产品推荐

