FastAPI
Utilisez Firecrawl avec FastAPI pour créer des API asynchrones de scraping web et de recherche en Python.
- Python 3.8+
- Une clé API Firecrawl — obtenez-en une gratuitement
pip install fastapi uvicorn firecrawl-pyAjoutez votre clé API à .env :
FIRECRAWL_API_KEY=fc-YOUR-API-KEYCréez main.py:
import os
from fastapi import FastAPI
from pydantic import BaseModel
from firecrawl import Firecrawl
app = FastAPI()
firecrawl = Firecrawl(api_key=os.environ["FIRECRAWL_API_KEY"])
class SearchRequest(BaseModel):
query: str
limit: int = 5
class ScrapeRequest(BaseModel):
url: str
class InteractRequest(BaseModel):
scrape_id: str
prompt: str
@app.post("/search")
async def search(req: SearchRequest):
results = firecrawl.search(req.query, limit=req.limit)
return [{"title": r.title, "url": r.url} for r in results.web]
@app.post("/scrape")
async def scrape(req: ScrapeRequest):
result = firecrawl.scrape(req.url)
return {"markdown": result.markdown, "metadata": result.metadata}
@app.post("/interact/start")
async def interact_start(req: ScrapeRequest):
result = firecrawl.scrape(req.url, formats=["markdown"])
return {"scrape_id": result.metadata.scrape_id}
@app.post("/interact")
async def interact(req: InteractRequest):
response = firecrawl.interact(req.scrape_id, prompt=req.prompt)
return {"output": response.output}
@app.post("/interact/stop")
async def interact_stop(req: InteractRequest):
firecrawl.stop_interaction(req.scrape_id)
return {"status": "stopped"}uvicorn main:app --reload# Rechercher sur le web
curl -X POST http://localhost:8000/search \
-H "Content-Type: application/json" \
-d '{"query": "firecrawl web scraping", "limit": 5}'
# Scraper une page
curl -X POST http://localhost:8000/scrape \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'
# Démarrer une session interactive, puis envoyer des prompts
curl -X POST http://localhost:8000/interact/start \
-H "Content-Type: application/json" \
-d '{"url": "https://www.amazon.com"}'FastAPI génère automatiquement une documentation interactive à http://localhost:8000/docs.
Pour une meilleure concurrence en cas de forte charge, utilisez AsyncFirecrawl :
from firecrawl import AsyncFirecrawl
async_firecrawl = AsyncFirecrawl(api_key=os.environ["FIRECRAWL_API_KEY"])
@app.post("/scrape-async")
async def scrape_async(req: ScrapeRequest):
result = await async_firecrawl.scrape(req.url)
return {"markdown": result.markdown}Documentation Scrape
Toutes les options de scrape, y compris les formats, les actions et les proxies
Documentation Search
Recherchez sur le Web et obtenez le contenu complet des pages
Documentation Interact
Cliquez, remplissez des formulaires et extrayez du contenu dynamique
Référence du SDK Python
Référence complète du SDK, avec crawl, cartographie, async, etc.
Was this page helpful?Suggest editsRaise issue