前提条件#
- Django 4+ 项目
- Firecrawl API 密钥 — 免费获取
安装 SDK#
pip install firecrawl-py将 API 密钥添加到 Django 设置或环境变量中:
export FIRECRAWL_API_KEY=fc-YOUR-API-KEY创建视图#
在你的 Django 应用中添加 search、抓取 和交互视图。在 views.py 中:
import jsonimport osfrom django.http import JsonResponsefrom django.views.decorators.csrf import csrf_exemptfrom django.views.decorators.http import require_POSTfrom firecrawl import Firecrawlfirecrawl = Firecrawl(api_key=os.environ["FIRECRAWL_API_KEY"])@csrf_exempt@require_POSTdef search_view(request): body = json.loads(request.body) results = firecrawl.search(body["query"], limit=body.get("limit", 5)) return JsonResponse( [{"title": r.title, "url": r.url} for r in results.web], safe=False, )@csrf_exempt@require_POSTdef scrape_view(request): body = json.loads(request.body) result = firecrawl.scrape(body["url"]) return JsonResponse({ "markdown": result.markdown, "metadata": result.metadata, })@csrf_exempt@require_POSTdef interact_start_view(request): body = json.loads(request.body) result = firecrawl.scrape(body["url"], formats=["markdown"]) return JsonResponse({"scrape_id": result.metadata.scrape_id})@csrf_exempt@require_POSTdef interact_view(request): body = json.loads(request.body) response = firecrawl.interact(body["scrape_id"], prompt=body["prompt"]) return JsonResponse({"output": response.output})@csrf_exempt@require_POSTdef interact_stop_view(request): body = json.loads(request.body) firecrawl.stop_interaction(body["scrape_id"]) return JsonResponse({"status": "stopped"})配置 URL 路由#
在 urls.py 中:
from django.urls import pathfrom . import viewsurlpatterns = [ path("api/search/", views.search_view), path("api/scrape/", views.scrape_view), path("api/interact/start/", views.interact_start_view), path("api/interact/", views.interact_view), path("api/interact/stop/", views.interact_stop_view),]试一下#
python manage.py runserver# 进行网页搜索curl -X POST http://localhost:8000/api/search/ \ -H "Content-Type: application/json" \ -d '{"query": "firecrawl web scraping", "limit": 5}'# 抓取页面curl -X POST http://localhost:8000/api/scrape/ \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com"}'# 启动交互式会话curl -X POST http://localhost:8000/api/interact/start/ \ -H "Content-Type: application/json" \ -d '{"url": "https://www.amazon.com"}'管理命令#
在 Django 管理命令中使用 Firecrawl 运行脚本和数据管道。创建 management/commands/scrape.py:
import osfrom django.core.management.base import BaseCommandfrom firecrawl import Firecrawlclass Command(BaseCommand): help = "抓取一个 URL 并打印 markdown" def add_arguments(self, parser): parser.add_argument("url", type=str) def handle(self, *args, **options): firecrawl = Firecrawl(api_key=os.environ["FIRECRAWL_API_KEY"]) result = firecrawl.scrape(options["url"]) self.stdout.write(result.markdown)python manage.py scrape https://example.com
