Rails
Utilisez Firecrawl avec Ruby on Rails pour effectuer des recherches, scraper des données et interagir avec des données web à l’aide de l’API REST.
- Ruby 3.0+ et Rails 7+
- Une clé API Firecrawl — obtenez-en une gratuitement
Ajoutez votre clé API à vos credentials Rails ou à l’environnement :
export FIRECRAWL_API_KEY=fc-YOUR-API-KEYCréez app/services/firecrawl_service.rb :
require "net/http"
require "json"
require "uri"
class FirecrawlService
BASE_URL = "https://api.firecrawl.dev/v2"
def initialize(api_key: ENV.fetch("FIRECRAWL_API_KEY"))
@api_key = api_key
end
def search(query, limit: 5)
post("/search", { query: query, limit: limit })
end
def scrape(url, **options)
post("/scrape", { url: url }.merge(options))
end
def interact(url, prompt, follow_up: nil)
# 1. Scraper pour ouvrir une session de navigateur
scrape_result = scrape(url, formats: ["markdown"])
scrape_id = scrape_result.dig("data", "metadata", "scrapeId")
# 2. Envoyer le premier prompt
post("/scrape/#{scrape_id}/interact", { prompt: prompt })
# 3. Envoyer le prompt de suivi
result = nil
if follow_up
result = post("/scrape/#{scrape_id}/interact", { prompt: follow_up })
end
# 4. Fermer la session
delete("/scrape/#{scrape_id}/interact")
result || scrape_result
end
private
def post(endpoint, payload)
uri = URI("#{BASE_URL}#{endpoint}")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer #{@api_key}"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
JSON.parse(response.body)
end
def delete(endpoint)
uri = URI("#{BASE_URL}#{endpoint}")
request = Net::HTTP::Delete.new(uri)
request["Authorization"] = "Bearer #{@api_key}"
Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
end
endGénérez un contrôleur :
rails generate controller Firecrawl search scrape interact --skip-routesModifiez app/controllers/firecrawl_controller.rb :
class FirecrawlController < ApplicationController
skip_before_action :verify_authenticity_token
def search
service = FirecrawlService.new
result = service.search(params.require(:query), limit: params.fetch(:limit, 5).to_i)
render json: result
end
def scrape
service = FirecrawlService.new
result = service.scrape(params.require(:url))
render json: result
end
def interact
service = FirecrawlService.new
result = service.interact(
params.require(:url),
params.require(:prompt),
follow_up: params[:followUp]
)
render json: result
end
endDans config/routes.rb :
Rails.application.routes.draw do
post "api/search", to: "firecrawl#search"
post "api/scrape", to: "firecrawl#scrape"
post "api/interact", to: "firecrawl#interact"
endrails server
# Rechercher sur le web
curl -X POST http://localhost:3000/api/search \
-H "Content-Type: application/json" \
-d '{"query": "firecrawl web scraping"}'
# Scraper une page
curl -X POST http://localhost:3000/api/scrape \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'
# Interagir avec une page
curl -X POST http://localhost:3000/api/interact \
-H "Content-Type: application/json" \
-d '{"url": "https://www.amazon.com", "prompt": "Search for iPhone 16 Pro Max", "followUp": "Click on the first result and tell me the price"}'Documentation recherche
Recherchez sur le web et obtenez le contenu complet de la page
Documentation Scraper
Toutes les options de scraper, y compris les formats, les actions et les proxies
Documentation Interact
Cliquez, remplissez des formulaires et extrayez du contenu dynamique
Référence API
Documentation complète de l’API REST
Was this page helpful?Suggest editsRaise issue