Les panneaux Google Knowledge Graph apparaissent en haut des résultats de recherche pour des entités telles que les marques, les personnes, les lieux et les produits. Ils contiennent des informations structurées, notamment des descriptions, des liens vers des sites officiels, des profils sociaux et des attributs clés. L'API Scavio inclut le champ knowledge_graph dans sa réponse SERP lorsqu'un panneau est disponible. Ce tutoriel montre comment interroger une entité, extraire l'objet knowledge_graph et l'utiliser pour construire un profil d'entité structuré sans recourir au scraping d'écran.
Prérequis
- Python 3.8 ou supérieur
- bibliothèque requests installée
- Une clé API Scavio
- Compréhension de base de l'analyse JSON
Parcours
Étape 1: Interrogez une entité qui possède un panneau de connaissances
Les panneaux de connaissances apparaissent pour les entités bien connues. Recherchez une marque, une personne ou un lieu par son nom. Google affiche un panneau lorsqu'il est sûr de l'entité.
def get_serp(entity: str) -> dict:
response = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"query": entity, "country_code": "us"}
)
response.raise_for_status()
return response.json()Étape 2: Extrayez le champ knowledge_graph
Vérifiez la présence de la clé knowledge_graph dans la réponse. Elle sera None si Google n'affiche pas de panneau pour la requête.
data = get_serp("OpenAI")
kg = data.get("knowledge_graph")
if kg:
print(kg)
else:
print("No knowledge graph found for this query")Étape 3: Analysez les attributs de l'entité
L'objet knowledge_graph contient des champs tels que title, type, description, website et une liste d'attributs. Extrayez-les par clé.
if kg:
print("Title:", kg.get("title"))
print("Type:", kg.get("type"))
print("Description:", kg.get("description"))
print("Website:", kg.get("website"))
for attr in kg.get("attributes", []):
print(f" {attr['name']}: {attr['value']}")Étape 4: Construisez un profil d'entité structuré
Combinez les champs du graphe de connaissances en un dictionnaire qui peut être stocké ou transmis à un pipeline aval.
def build_profile(kg: dict) -> dict:
return {
"name": kg.get("title"),
"entity_type": kg.get("type"),
"description": kg.get("description"),
"website": kg.get("website"),
"attributes": {a["name"]: a["value"] for a in kg.get("attributes", [])},
}Exemple Python
import os
import requests
API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"
def get_knowledge_graph(entity: str) -> dict | None:
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
json={"query": entity, "country_code": "us"})
r.raise_for_status()
return r.json().get("knowledge_graph")
def build_profile(kg: dict) -> dict:
return {
"name": kg.get("title"),
"type": kg.get("type"),
"description": kg.get("description"),
"website": kg.get("website"),
"attributes": {a["name"]: a["value"] for a in kg.get("attributes", [])},
}
if __name__ == "__main__":
entities = ["OpenAI", "Stripe", "Cloudflare"]
for name in entities:
kg = get_knowledge_graph(name)
if kg:
profile = build_profile(kg)
print(profile)
else:
print(f"No KG for {name}")Exemple JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";
async function getKnowledgeGraph(entity) {
const res = await fetch(ENDPOINT, {
method: "POST",
headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ query: entity, country_code: "us" })
});
const data = await res.json();
return data.knowledge_graph || null;
}
function buildProfile(kg) {
return {
name: kg.title,
type: kg.type,
description: kg.description,
website: kg.website,
attributes: Object.fromEntries((kg.attributes || []).map(a => [a.name, a.value]))
};
}
async function main() {
const kg = await getKnowledgeGraph("OpenAI");
if (kg) console.log(JSON.stringify(buildProfile(kg), null, 2));
}
main().catch(console.error);Sortie attendue
{
"knowledge_graph": {
"title": "OpenAI",
"type": "Research laboratory",
"description": "American artificial intelligence research laboratory...",
"website": "https://openai.com",
"founded": "December 11, 2015",
"headquarters": "San Francisco, California",
"attributes": [
{ "name": "Founded", "value": "December 11, 2015" },
{ "name": "CEO", "value": "Sam Altman" }
]
}
}