Passer au contenu principal

Prérequis

Ajouter la dépendance

dependencies {
    implementation("com.firecrawl:firecrawl-java:1.2.0")
}

Configuration

Ajoutez votre clé API à application.properties :
firecrawl.api-key=${FIRECRAWL_API_KEY}
Ou définissez-la en tant que variable d’environnement :
export FIRECRAWL_API_KEY=fc-YOUR-API-KEY

Créer un bean de configuration

Créez EvocrawlConfig.java :
import com.firecrawl.client.EvocrawlClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class EvocrawlConfig {

    @Bean
    public EvocrawlClient firecrawlClient(
            @Value("${firecrawl.api-key}") String apiKey) {
        return EvocrawlClient.builder()
            .apiKey(apiKey)
            .build();
    }
}

Créer un contrôleur REST

Créez EvocrawlController.java:
import com.firecrawl.client.EvocrawlClient;
import com.firecrawl.models.Document;
import com.firecrawl.models.SearchData;
import com.firecrawl.models.SearchOptions;
import com.firecrawl.models.ScrapeOptions;
import com.firecrawl.models.BrowserExecuteResponse;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/api")
public class EvocrawlController {

    private final EvocrawlClient firecrawl;

    public EvocrawlController(EvocrawlClient firecrawl) {
        this.firecrawl = firecrawl;
    }

    @PostMapping("/search")
    public SearchData search(@RequestBody Map<String, Object> body) {
        return firecrawl.search(
            (String) body.get("query"),
            SearchOptions.builder()
                .limit((int) body.getOrDefault("limit", 5))
                .build()
        );
    }

    @PostMapping("/scrape")
    public Map<String, Object> scrape(@RequestBody Map<String, String> body) {
        Document doc = firecrawl.scrape(body.get("url"));
        return Map.of(
            "markdown", doc.getMarkdown(),
            "metadata", doc.getMetadata()
        );
    }

    @PostMapping("/interact")
    public Map<String, Object> interact(@RequestBody Map<String, String> body) {
        Document doc = firecrawl.scrape(body.get("url"),
            ScrapeOptions.builder().formats(List.of((Object) "markdown")).build());
        String scrapeId = (String) doc.getMetadata().get("scrapeId");

        BrowserExecuteResponse response = firecrawl.interact(scrapeId,
            body.getOrDefault("code", "const title = await page.title(); console.log(title);"));

        firecrawl.stopInteractiveBrowser(scrapeId);

        return Map.of("result", response.getStdout());
    }
}

Lancez-le

./gradlew bootRun

Essayez-le

# Rechercher sur le web
curl -X POST http://localhost:8080/api/search \
  -H "Content-Type: application/json" \
  -d '{"query": "firecrawl web scraping"}'

# Scraper une page
curl -X POST http://localhost:8080/api/scrape \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'

# Interagir avec une page
curl -X POST http://localhost:8080/api/interact \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.amazon.com", "code": "const title = await page.title(); console.log(title);"}'

Étapes suivantes

Docs de recherche

Recherchez sur le web et obtenez le contenu intégral des pages

Docs Scrape

Toutes les options de scrape, y compris les formats, les actions et les proxies

Docs Interact

Cliquez, remplissez des formulaires et extrayez du contenu dynamique

Référence du SDK Java

Référence complète du SDK avec crawl, cartographie, extraction par lot, etc.