OpenClaw ile Yapay Zeka Destekli Veri Çıkarma ve Web Kazıma
Geleneksel ağ kazıyıcılar kırılgandır. Bir sitenin düzenini yeniden tasarladığı anı bozan CSS seçicilerine ve XPath kalıplarına bağlıdırlar. JavaScript çerçeveleri tarafından yüklenen dinamik içeriğe uyum sağlayamazlar. CAPTCHA'larla, hız sınırlamasıyla veya IP bloklarıyla karşılaştıklarında sessizce başarısız olurlar. Bir sıyırıcı filosunun bakımı, hedef sahalar değiştikçe sürekli dikkat gerektirir; bu, çoğu zaman çıkarılan verilerin değerini aşan bir maliyettir.
OpenClaw'ın veri çıkarma aracıları farklıdır. Kırılgan seçicilere güvenmeden web sitelerinden veri çıkarmak için tarayıcı otomasyonunu, görsel anlayışı ve LLM tabanlı ayrıştırmayı birleştirirler. Bir site düzenini değiştirdiğinde aracı buna uyum sağlar. Bir CAPTCHA ile karşılaştığında sessizce başarısız olmak yerine daha da tırmanır. Sonuç, geleneksel kazıyıcılardan çok daha fazla bakımı kolay olan bir veri çıkarma hattıdır.
Önemli Çıkarımlar
- OpenClaw'ın çıkarma aracıları, JavaScript ile oluşturulan içerik için tarayıcı otomasyonunu (Oyun Yazarı) kullanarak kullanıcıların gördükleri ile kazıyıcıların erişebileceği arasındaki boşluğu ortadan kaldırır.
- LLM tabanlı ayrıştırma, CSS seçicileri olmadan yapılandırılmamış HTML'den yapılandırılmış verileri çıkarır; aracı, içeriği konumsal olarak değil anlamsal olarak anlar.
- Yerleşik proxy rotasyonu, istek parmak izi rastgeleleştirmesi ve hız sınırlaması, ek altyapı gerektirmeden anti-bot önlemlerini yönetir.
- Şema öncelikli çıkarma, yazılı, doğrulanmış çıktı üretir; artık kısmi veya hatalı biçimlendirilmiş alıntılanmış verilerle uğraşmanıza gerek kalmaz.
- Çıkarma aracısı site değişikliklerini izler ve veri yapısı veya kullanılabilirliği önemli ölçüde değiştiğinde uyarı verir.
- Etik koruma bariyerleri yerleşiktir: robots.txt uyumluluğu, hız sınırına uyum ve hizmet şartları inceleme kontrol noktaları.
- Çıkarılan veriler otomatik olarak temizlenir, normalleştirilir ve veri ambarınıza, API'nize veya aşağı akış uygulamanıza iletilir.
- ECOSIRE, pazar istihbaratı, rekabetçi izleme ve araştırma uygulamaları için özel veri çıkarma hatları oluşturur ve yönetir.
Mimari: OpenClaw Verileri Nasıl Çıkarır?
Veri çıkarma yığınının dört katmanı vardır:
Target URL(s)
↓
[ Browser Agent ] — navigation, rendering, interaction
↓
[ Parser Agent ] — LLM-based content extraction
↓
[ Validation Agent ] — schema validation, normalization
↓
[ Delivery Agent ] — destination write (warehouse, API, file)
Tarayıcı Aracısı, HTTP isteklerini ve JavaScript oluşturmayı yönetir. Ayrıştırıcı Aracısı, işlenmiş HTML'den anlam çıkarır. Doğrulama Aracısı şema uyumluluğunu zorlar ve değerleri normalleştirir. Teslimat Aracısı, çıkarılan verileri hedef hedefe yazar.
Tarayıcı Aracısı: Kullanıcıların Gördüklerini Oluşturma
JavaScript ağırlıklı siteler (SPA'lar, sonsuz kaydırma, modal geçişli içerik) basit HTTP istekleriyle kazınamaz. Tarayıcı Aracısı, sayfaları tam olarak bir tarayıcının yapacağı gibi oluşturmak için Playwright'ı kullanır, ardından tamamen işlenmiş DOM'u Ayrıştırıcı Aracısına sunar.
export const RenderPage = defineSkill({
name: "render-page",
tools: ["browser", "proxy"],
async run({ input, tools }) {
const proxyConfig = await tools.proxy.getNextProxy({ country: input.targetCountry });
const page = await tools.browser.newPage({
proxy: proxyConfig,
userAgent: getRandomUserAgent(),
viewport: { width: 1440, height: 900 },
locale: "en-US",
timezoneId: "America/New_York",
});
await page.setExtraHTTPHeaders({
"Accept-Language": "en-US,en;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
});
const response = await page.goto(input.url, { waitUntil: "networkidle", timeout: 30_000 });
if (response.status() === 429) {
throw new SkillError("RATE_LIMITED", "Target site returned 429. Backing off.", { retryAfterMs: 60_000 });
}
// Execute interaction steps if defined (click "Load More", handle cookie banners, etc.)
for (const step of input.interactionSteps ?? []) {
await executeInteractionStep(page, step);
}
const html = await page.content();
const screenshot = await page.screenshot({ type: "png" }); // For visual verification
await page.close();
return { html, screenshot, url: page.url(), statusCode: response.status() };
},
});
Rastgele parmak izi isteme: Tarayıcı aracısı, parmak izi tabanlı engellemeyi önlemek için kullanıcı aracılarını, görünüm alanı boyutlarını ve HTTP başlıklarını döndürür. Parmak izi profilleri, gerçekçi tarayıcı imzalarından oluşan seçilmiş bir kitaplıktan alınır.
Proxy rotasyonu: Proxy aracı, coğrafyaya göre düzenlenmiş bir konut ve veri merkezi proxy havuzunu korur. Hedef sitenin coğrafi erişim gereksinimlerine göre proxy'leri seçer ve istekleri IP adresleri arasında dağıtmak için bunları döndürür.
Etkileşim adımları: Çoğu site, içeriğin görünür hale gelmesi için "Çerezleri kabul et" seçeneğini tıklamak, yavaş yüklemeyi tetiklemek için kaydırma yapmak, sayfalandırma kontrollerini tıklamak gibi etkileşimler gerektirir. Etkileşim adımları bildirimsel olarak tanımlanır:
{
"interactionSteps": [
{ "type": "click", "selector": "[data-testid='cookie-accept']", "optional": true },
{ "type": "scroll", "direction": "down", "pixels": 2000 },
{ "type": "wait", "milliseconds": 2000 },
{ "type": "click", "text": "Load more results", "optional": true }
]
}
Ayrıştırıcı Aracısı: Seçiciler Olmadan Semantik Çıkarma
Ayrıştırıcı, OpenClaw'ın yapay zeka avantajının en görünür olduğu yerdir. Ayrıştırıcı Aracısı, kırılgan CSS seçicileri yerine, oluşturulan HTML'yi ve şema tanımını anlamsal anlayış kullanarak istenen alanları çıkaran bir LLM'ye gönderir.
export const ExtractStructuredData = defineSkill({
name: "extract-structured-data",
tools: ["llm"],
async run({ input, tools }) {
// Clean HTML for LLM consumption (strip scripts, styles, non-content)
const cleanedHtml = cleanHtmlForExtraction(input.html, {
stripTags: ["script", "style", "noscript", "iframe"],
preserveAttributes: ["href", "src", "data-price", "data-sku"],
maxLength: 50_000, // LLM context limit
});
const extractedData = await tools.llm.extract({
content: cleanedHtml,
schema: input.extractionSchema,
instructions: `Extract the requested fields from the HTML. For prices, include the numeric value only (no currency symbols). For dates, use ISO 8601 format. If a field is not present on the page, return null for that field.`,
});
return { data: extractedData, sourceUrl: input.url, extractedAt: new Date().toISOString() };
},
});
Çıkartma şeması tanımı: Şemalar, LLM'ye hassas yazma rehberliği sağlayan JSON Şeması formatında tanımlanır:
{
"type": "object",
"properties": {
"productName": { "type": "string", "description": "Full product name including model/variant" },
"price": { "type": "number", "description": "Current selling price, numeric only" },
"originalPrice": { "type": ["number", "null"], "description": "Original price before discount, or null if not on sale" },
"availability": { "type": "string", "enum": ["in_stock", "out_of_stock", "limited", "preorder"] },
"rating": { "type": ["number", "null"], "description": "Average rating out of 5, or null if no ratings" },
"reviewCount": { "type": ["integer", "null"] },
"sku": { "type": ["string", "null"] }
},
"required": ["productName", "price", "availability"]
}
LLM, her alanı sayfa içeriğinin anlamsal anlayışına göre doldurur. Gerekli alanların bulunmaması, sessiz bir boş değer yerine çıkarma hatasını tetikler.
Tarama Yönetimi: Çok Sayfalı Sitelerde Gezinme
En yararlı veri çıkarma, birden çok sayfada gezinmeyi gerektirir: sayfalandırılmış ürün listeleri, kategori hiyerarşileri, çok sayfalı makaleler. Tarama Yöneticisi, bir sitedeki Tarayıcı ve Ayrıştırıcı aracılarını koordine eder.
export const CrawlProductListing = defineSkill({
name: "crawl-product-listing",
tools: ["browser", "queue", "storage"],
async run({ input, tools }) {
let pageUrl: string | null = input.startUrl;
const allProducts = [];
let pageNumber = 1;
while (pageUrl && pageNumber <= input.maxPages) {
const rendered = await tools.browser.render(pageUrl, { interactionSteps: input.interactionSteps });
const products = await extractProductsFromPage(rendered.html, input.extractionSchema);
allProducts.push(...products);
// Find the "Next" page URL
pageUrl = extractNextPageUrl(rendered.html, input.paginationPattern);
pageNumber++;
// Respect crawl rate — be a polite scraper
await sleep(input.delayBetweenPagesMs ?? 2000);
}
await tools.storage.put(`crawls/${Date.now()}-products.json`, JSON.stringify(allProducts));
return { productCount: allProducts.length, pagesProcessed: pageNumber - 1 };
},
});
Tarama yöneticisi varsayılan olarak robots.txt'a saygı gösterir. Taramayı başlatmadan önce, hedef sitenin robots.txt dosyasını alıp ayrıştırır ve yapılandırılmış kullanıcı aracısı için hedef yollara izin verilip verilmediğini kontrol eder. İzin verilmeyen yollara erişmeye çalışan taramalar engellenir ve operatöre bir uyarı gönderilir.
Botlara Karşı Önlemlerin Uygulanması
Modern anti-bot sistemleri (Cloudflare, Akamai Bot Manager, PerimeterX), insanları botlardan ayırmak için davranışsal sinyaller kullanır. Çıkarma aracısı meşru tarayıcı trafiği olarak görünmek için çeşitli teknikler kullanır:
Fare hareketi simülasyonu: Gerçek tarayıcı oturumlarında doğrusal olmayan fare hareketleri bulunur. Aracı, hedeflere tıklamadan önce doğal hız eğrileriyle gerçekçi imleç yollarını simüle eder.
Zamanlama değişimi: İstekler, tek tip veya belirleyici aralıklarla değil, insan göz atma davranışına göre kalibre edilmiş bir dağıtımdan alınan rastgele aralıklarla geciktirilir.
Çerez yönetimi: Anti-bot sistemleri tarafından ayarlanan çerezler tıpkı bir tarayıcının yapacağı gibi korunur ve sonraki isteklerde gönderilir.
JavaScript sorgulamasının tamamlanması: JavaScript sorgulamaları kullanan siteler için (tarayıcı API yeteneklerini kontrol etme, bilgi işlem bulmacalarını yürütme), tam tarayıcı ortamı bu kontrolleri otomatik olarak geçer.
CAPTCHA geçitlerine sahip siteler için aracının iki yolu vardır:
- Hizmet entegrasyonu: Etkileşimli olmayan çözüm kabul edilebilir olduğunda CAPTCHA'ları insan destekli bir CAPTCHA çözme hizmetine (2captcha, Anti-Captcha) yönlendirin.
- İnsan tarafından üst kademeye iletilmesi: Çıkarma görevini duraklatın, bir insan operatörü CAPTCHA'yı manuel olarak geçmesi konusunda uyarın ve bir sonraki sayfadan devam edin.
Şema Doğrulama ve Veri Normalleştirme
Ham çıkarılan veriler gürültülüdür. Fiyatlar farklı formatlarda gelir (Avrupa formatları için 1.299,99$, 1299,99, 1.299,99). Tarihler akla gelebilecek her formatta görünür. Ürün adlarında tutarsız büyük harf kullanımı ve kodlama hataları var. Doğrulama Aracısı, tüm değerleri dağıtım katmanına ulaşmadan önce normalleştirir.
export const NormalizeExtractedData = defineSkill({
name: "normalize-extracted-data",
async run({ input }) {
const normalized = input.data.map((record) => ({
...record,
price: parseFloat(String(record.price).replace(/[^0-9.]/g, "")),
originalPrice: record.originalPrice
? parseFloat(String(record.originalPrice).replace(/[^0-9.]/g, ""))
: null,
productName: record.productName.trim().replace(/\s+/g, " "),
extractedAt: new Date(record.extractedAt).toISOString(),
availability: normalizeAvailability(record.availability),
}));
// Validate against schema
const validation = validateAgainstSchema(normalized, input.outputSchema);
const valid = normalized.filter((_, i) => validation[i].valid);
const invalid = normalized.filter((_, i) => !validation[i].valid);
return { valid, invalid, validCount: valid.length, invalidCount: invalid.length };
},
});
Geçersiz kayıtlar (gerekli alanların eksik olması, normalleştirilemeyen değerler) sessizce bırakılmak yerine incelenmek üzere ayrı bir istisna deposuna yazılır.
Teslimat: Verilerin Gitmesi Gereken Yere Alınması
Teslimat Aracısı normalleştirilmiş verileri yapılandırılmış hedefe yazar:
Veri Ambarı: Şema eşleştirme sütun eşlemesi ile BigQuery, Snowflake veya Redshift'e toplu ekleme. Verimli sorgulama için çıkarma tarihine göre bölümlendirilmiştir.
REST API: Gerçek zamanlı tüketim için dahili bir API uç noktasına POST yapın. 5xx'te yeniden denemeyi destekler ve üstel geri çekilmeyi içerir.
S3 / Bulut Depolama: Analitik ardışık düzenlerle aşağı yönde işleme için Parquet veya JSON olarak yazın.
Veritabanı: Yapılandırılabilir çakışma çözümüyle PostgreSQL, MySQL veya MongoDB'ye yükseltme (eşleşmede güncelleme, eşleşmede atlama, eşleşmede hata).
Algılama ve İzlemeyi Değiştirin
Siteler yapılarını değiştirir. Bir rakip ürün sayfalarını yeniden tasarlıyor. Bir tedarikçi fiyatlandırma biçimini günceller. Çıkarma hattının bu değişiklikleri tespit etmesi ve veri kalitesi bozulmadan önce uyarması gerekir.
İzleme aracısı günlük olarak çalışır ve mevcut çıkarma çıktısını istatistiksel bir temel ile karşılaştırır:
- Alan kapsama oranı (her alan için kayıtların yüzde kaçının boş olmayan değerlere sahip olduğu)
- Değer dağılımı değişiklikleri (fiyat aralıkları, bulunabilirlik oranları)
- Çıkarma başarı oranı (tarama denemelerinin yüzde kaçı geçerli kayıtlar üretiyor)
Önemli sapmalar, insan tarafından incelenmek üzere değiştirilen çıktının bir örneğini içeren bir uyarıyı tetikler.
Sıkça Sorulan Sorular
Web kazıma yasal mı?
Web kazımanın yasallığı yargı yetkisine, kazınan verilere ve hedef sitenin hizmet şartlarına bağlıdır. Kamuya açık verilerin (ürün fiyatları, halka açık olarak listelenen iletişim bilgileri, yayınlanan haber makaleleri), sitenin hizmet şartlarına tabi olarak çoğu yargı bölgesinde genel olarak alınmasına izin verilir. Kimlik doğrulamanın arkasına saklanmak, kişisel verilere erişmek veya teknik koruma önlemlerini atlatmak yasal ve etik kaygılara yol açar. ECOSIRE, üretim çıkarma boru hatlarını dağıtmadan önce özel kullanım durumunuz ve hedef siteleriniz için yasal inceleme almanızı önerir. OpenClaw, varsayılan olarak temel etik korumalar olarak robots.txt uyumluluğunu ve hız sınırlamasını içerir.
Sistem, verilere erişmek için oturum açmayı gerektiren siteleri nasıl yönetiyor?
Kuruluşunuzun meşru kimlik bilgilerine sahip olduğu siteler için (kendi tedarikçi portalınız, abone olduğunuz rakip fiyat izleme hizmetleri, ortak siteleri), aracı, gizli dizi yöneticisinde saklanan yapılandırılmış kimlik bilgilerini kullanarak oturum açabilir. Oturum açma etkileşimi, etkileşim adımları sistemi kullanılarak Tarayıcı Aracısı tarafından gerçekleştirilir. Oturum çerezleri otomatik olarak tutulur ve yenilenir. Çok faktörlü kimlik doğrulama gerektiren siteler için aracı, yapılandırılabilir bir TOTP sırrı kullanarak TOTP tabanlı MFA'yı destekler.
Kazınan veriler için veri güncelliği garantisi nedir?
Verilerin güncelliği tarama zamanlamanıza bağlıdır. OpenClaw, gerçek zamanlı (hız sınırlamasıyla sürekli tarama) günlük, haftalık veya isteğe bağlı tarama programlarını destekler. Rekabetçi fiyatlandırma verileri için, saatlik veya günde iki kez taramalar yaygındır. Pazar araştırması için yavaş yavaş değişen günlük veya haftalık veriler yeterlidir. Ekstraksiyon maddesi her kayda ekstraksiyon süresini damgalayarak tüketicilerin tazeliği değerlendirebilmesini sağlar.
Sistem web sayfalarının yanı sıra sayfalandırılmış API'leri de yönetebilir mi?
Evet. Tarayıcı Aracısı web sayfalarını yönetir; API Çıkarma Aracısı, sayfalandırılmış REST ve GraphQL API'lerini yönetir. Yapılandırılmış JSON döndüren API'ler için Ayrıştırıcı Aracısı, API yanıt alanlarını çıkış şemasına eşleyen daha basit bir şema eşleme adımıyla değiştirilir. Tarama Yöneticisi, sayfalandırmayı Bağlantı başlıkları, imleç tabanlı sayfalandırma, uzaklık sınırı sayfalandırma ve belirteç tabanlı sayfalandırma modelleri aracılığıyla yönetir.
İlk sayfa oluşturulduktan sonra eşzamansız olarak yüklenen dinamik içeriği nasıl yönetirsiniz?
Tarayıcı Aracısı ağ boşta beklemeyi destekler; sayfa içeriğini çıkarmadan önce 500 ms boyunca yeni ağ isteği yapılmayana kadar bekler. Kritik verileri yükleyen belirli API çağrıları için, aracıyı, ağ yanıtlarını kesecek ve verileri, HTML ayrıştırmasından daha hızlı ve daha güvenilir olan, işlenmiş HTML yerine doğrudan API yükünden çıkaracak şekilde yapılandırabilirsiniz.
Sonraki Adımlar
Veriler rekabetçi bir varlıktır, ancak yalnızca onlara güvenilir ve geniş ölçekte erişebiliyorsanız. OpenClaw'ın veri çıkarma aracıları, kırılgan geleneksel kazıyıcıların eşleşemeyeceği güvenilirliği, uyarlanabilirliği ve yapay zeka destekli ayrıştırmayı sağlar.
ECOSIRE'ın OpenClaw Özel Beceriler hizmeti pazar istihbaratı, rekabetçi izleme, fiyat takibi ve araştırma verileri toplama kullanım senaryoları için veri çıkarma hattı tasarımı ve uygulamasını içerir. Ekibimiz sağlam, bakımı kolay ve etik açıdan sağlam ekstraksiyon boru hatları tasarlıyor.
Veri çıkarma gereksinimlerinizi görüşmek ve özel bir uygulama teklifi almak için ECOSIRE ile iletişime geçin.
Yazan
ECOSIRE Research and Development Team
ECOSIRE'da kurumsal düzeyde dijital ürünler geliştiriyor. Odoo entegrasyonları, e-ticaret otomasyonu ve yapay zeka destekli iş çözümleri hakkında içgörüler paylaşıyor.
İlgili Makaleler
AI-Powered Accounting Automation: What Works in 2026
Discover which AI accounting automation tools deliver real ROI in 2026, from bank reconciliation to predictive cash flow, with implementation strategies.
Payroll Processing: Setup, Compliance, and Automation
Complete payroll processing guide covering employee classification, federal and state withholding, payroll taxes, garnishments, automation platforms, and year-end W-2 compliance.
AI Agents for Business Automation: The 2026 Landscape
Explore how AI agents are transforming business automation in 2026, from multi-agent orchestration to practical deployment strategies for enterprise teams.