Scraper GitHub
Découvrez comment scraper et effectuer des recherches sur GitHub à l'aide des fonctionnalités principales de Firecrawl et du Research Index
Découvrez comment utiliser les fonctionnalités principales de Firecrawl pour scraper des dépôts, des tickets et de la documentation sur GitHub.
Il existe deux façons d’obtenir des données GitHub avec Firecrawl. Vous pouvez scraper, cartographier ou crawler une URL github.com spécifique (ce que couvre le reste de cette page), ou utiliser la recherche GitHub du Research Index pour découvrir de manière sémantique des tickets, des pull requests, des discussions et des README pertinents sur l’ensemble de GitHub, sans connaître l’URL exacte.
npm install firecrawl zodExtraire des données structurées à partir de dépôts en utilisant des schémas Zod.
import { Firecrawl } from 'firecrawl';
import { z } from 'zod';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
const result = await firecrawl.scrape('https://github.com/firecrawl/firecrawl', {
formats: [{
type: 'json',
schema: z.object({
name: z.string(),
description: z.string(),
stars: z.number(),
forks: z.number(),
language: z.string(),
topics: z.array(z.string())
})
}]
});
console.log(result.json);Rechercher des dépôts, des tickets ou de la documentation sur GitHub.
import { Firecrawl } from 'firecrawl';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
const searchResult = await firecrawl.search('machine learning site:github.com', {
limit: 10,
sources: [{ type: 'web' }], // { type: 'news' }, { type: 'images' }
scrapeOptions: {
formats: ['markdown']
}
});
console.log(searchResult);Le Research Index de Firecrawl comprend un index GitHub qui recherche sémantiquement parmi les tickets, pull requests, discussions et README de dépôts GitHub publics indexés. Il permet de trouver des détails d’implémentation et des solutions d’ingénierie existantes lorsque vous ne connaissez pas le dépôt ou l’URL exacts.
import { Firecrawl } from 'firecrawl';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
const results = await firecrawl.research.searchGithub(
'how to handle rate limit retries with exponential backoff',
{ k: 10 }
);
console.log(results);Vous pouvez également accéder au même index GitHub via le point de terminaison général /search, avec la catégorie github.
import { Firecrawl } from 'firecrawl';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
const searchResult = await firecrawl.search('exponential backoff retry', {
categories: ['github'],
limit: 10
});
console.log(searchResult);Consultez le guide du Research Index pour savoir comment l’utiliser avec Python, cURL, la CLI et MCP.
Extraire une seule page GitHub – dépôt, ticket ou fichier.
import { Firecrawl } from 'firecrawl';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
const result = await firecrawl.scrape('https://github.com/firecrawl/firecrawl', {
formats: ['markdown'] // par ex. html, links, etc.
});
console.log(result);Découvrez toutes les URL disponibles dans un dépôt ou un site de documentation. Remarque : Map ne renvoie que les URL, sans contenu.
import { Firecrawl } from 'firecrawl';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
const mapResult = await firecrawl.map('https://github.com/vercel/next.js/tree/canary/docs');
console.log(mapResult.links);
// Retourne un tableau d'URL sans contenuParcourir plusieurs pages d’un dépôt ou d’une documentation.
import { Firecrawl } from 'firecrawl';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
const crawlResult = await firecrawl.crawl('https://github.com/facebook/react/wiki', {
limit: 10,
scrapeOptions: {
formats: ['markdown']
}
});
console.log(crawlResult.data);Extraire plusieurs URL GitHub simultanément.
import { Firecrawl } from 'firecrawl';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
// Attendre la fin
const job = await firecrawl.batchScrape([
'https://github.com/vercel/next.js',
'https://github.com/facebook/react',
'https://github.com/microsoft/typescript'],
{
options: {
formats: ['markdown']
},
pollInterval: 2,
timeout: 120
}
);
console.log(job.status, job.completed, job.total);
console.log(job);Extrayez des données structurées à partir de plusieurs dépôts en une seule opération.
import { Firecrawl } from 'firecrawl';
import { z } from 'zod';
const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });
// Attendre la fin
const job = await firecrawl.batchScrape([
'https://github.com/vercel/next.js',
'https://github.com/facebook/react'],
{
options: {
formats: [{
type: 'json',
schema: z.object({
name: z.string(),
description: z.string(),
stars: z.number(),
language: z.string()
})
}]
},
pollInterval: 2,
timeout: 120
}
);
console.log(job.status, job.completed, job.total);
console.log(job);