Pada halaman ini
Revolusi AI berjalan dengan data. Sama ada anda sedang menala halus LLM, membina sistem RAG, atau melatih model tersuai, data web selalunya menjadi sumber bahan latihan anda yang paling kaya.
Tetapi mengumpul data latihan berkualiti tinggi daripada web tidaklah mudah. Panduan ini merangkumi segala-galanya: pertimbangan etika, talian paip pengumpulan, jaminan kualiti, dan pelaksanaan praktikal dengan CrawlForge.
Halangan Data
Model AI hanya sebaik data latihannya. Namun kebanyakan pasukan menghadapi cabaran kritikal:
- Kuantiti: Model memerlukan berjuta-juta contoh
- Kualiti: Sampah masuk, sampah keluar
- Kepelbagaian: Melatih dengan data sempit menghasilkan model yang sempit
- Kesegaran: Set data statik menjadi basi
- Pematuhan: Pertimbangan undang-undang dan etika
Web scraping menyelesaikan masalah kuantiti dan kepelbagaian—tetapi hanya jika dilakukan dengan betul.
Jenis Data Web untuk AI
Kandungan Teks
Jenis data latihan yang paling biasa:
- Artikel dan siaran blog - Teks naratif untuk pemahaman bahasa
- Dokumentasi - Penulisan teknikal dan penjelasan berstruktur
- Forum dan Soal Jawab - Corak perbualan dan penyelesaian masalah
- Perihalan produk - Teks ringkas dan deskriptif
- Ulasan - Kandungan kaya sentimen dengan pendapat
Data Berstruktur
Untuk pengelasan dan pengecaman entiti:
- Katalog produk - Item dengan atribut
- Senarai perniagaan - Entiti dengan hubungan
- Data acara - Maklumat temporal dan lokasi
- Jadual dan set data - Data berangka dan berkategori
Metadata
Selalunya diabaikan tetapi bernilai:
- Tag SEO - Ringkasan dan kata kunci yang ditulis manusia
- Penanda Schema.org - Data entiti berstruktur
- Graf sosial - Data hubungan
- Cap masa - Corak temporal
Berbilang Mod
Untuk model penglihatan dan berbilang mod:
- Imej dengan kapsyen - Pasangan visual-bahasa
- PDF dengan teks - Pemahaman dokumen
- Video dengan transkrip - Visual-bahasa temporal
Prinsip Web Scraping Beretika
Sebelum mengumpul data, fahami landskap etika dan undang-undang.
1. Hormati robots.txt
robots.txt memberitahu crawler apa yang dibenarkan:
# Example robots.txt
User-agent: *
Disallow: /private/
Disallow: /api/
Allow: /public/
Crawl-delay: 10
CrawlForge menghormati robots.txt secara lalai. Anda boleh menyemak dasar mana-mana laman:
curl https://example.com/robots.txt2. Pengehadan Kadar
Jangan membebankan pelayan:
- Hormati arahan Crawl-delay
- Jarakkan permintaan sekurang-kurangnya 1-5 saat selang
- Pantau kod respons - 429 bermaksud perlahankan
- Kurangkan kekonkurenan untuk laman yang lebih kecil
CrawlForge mempunyai pengehadan kadar terbina dalam, tetapi tetaplah berhemah.
3. Pelesenan Data
Fahami hak kandungan:
- Creative Commons - Biasanya tidak menjadi masalah dengan atribusi
- Hak cipta - Memerlukan kebenaran untuk latihan
- Terma Perkhidmatan - Sesetengah laman melarang scraping
- GDPR/Privasi - Data peribadi mempunyai sekatan
4. Standard LLMs.txt
Standard baharu untuk kebenaran khusus AI:
# llms.txt example
Allow: training
Allow: inference
Require: attribution
Contact: ai@example.com
Periksa llms.txt (atau robots.txt) setiap laman untuk menemui kebenaran AI sebelum crawling.
Membina Talian Paip Pengumpulan Data
Gambaran Keseluruhan Seni Bina
┌──────────────────────────────────────────────────┐
│ 1. Source Discovery │
│ - Identify target websites │
│ - Map site structure │
│ - Prioritize high-quality sources │
└──────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────┐
│ 2. Content Extraction │
│ - Fetch pages │
│ - Extract main content │
│ - Handle pagination │
└──────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────┐
│ 3. Data Cleaning │
│ - Remove duplicates │
│ - Filter low-quality content │
│ - Normalize formats │
└──────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────┐
│ 4. Quality Validation │
│ - Language detection │
│ - Content scoring │
│ - Deduplication │
└──────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────┐
│ 5. Storage & Export │
│ - Format for training │
│ - Version control │
│ - Documentation │
└──────────────────────────────────────────────────┘
Langkah 1: Penemuan Sumber
Mulakan dengan memetakan kandungan yang tersedia:
// Map a documentation site
const response = await fetch('https://crawlforge.dev/api/v1/tools/map_site', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: 'https://docs.example.com',
maxDepth: 3,
includePatterns: ['/docs/*', '/guides/*'],
excludePatterns: ['/api/*', '/admin/*']
})
});
const { data } = await response.json();
console.log(`Found ${data.urls.length} pages to scrape`);
// Found 847 pages to scrapeKos: 2 credits setiap panggilan map_site
Langkah 2: Pengekstrakan Kandungan
Ekstrak kandungan daripada URL yang ditemui:
// Batch scrape all discovered URLs
const urls = data.urls;
// Process in batches of 50
for (let i = 0; i < urls.length; i += 50) {
const batch = urls.slice(i, i + 50);
const response = await fetch('https://crawlforge.dev/api/v1/tools/batch_scrape', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
urls: batch,
extractContent: true,
includeMetadata: true
})
});
const { data } = await response.json();
// Store results
for (const result of data.results) {
await storeDocument({
url: result.url,
content: result.content,
metadata: result.metadata,
scrapedAt: new Date()
});
}
// Respect rate limits
await sleep(1000);
}Kos: 5 credits setiap panggilan batch_scrape (sehingga 50 URL)
Langkah 3: Pembersihan Data
Buang hingar dan normalkan kandungan:
function cleanDocument(doc: ScrapedDocument): CleanedDocument {
let content = doc.content;
// Remove boilerplate
content = removeNavigation(content);
content = removeFooters(content);
content = removeAds(content);
// Normalize whitespace
content = content.replace(/\s+/g, ' ').trim();
// Remove very short documents
if (content.split(' ').length < 50) {
return null; // Too short
}
// Remove documents with too much code
const codeRatio = countCodeBlocks(content) / content.length;
if (codeRatio > 0.8) {
return null; // Mostly code, not useful for text training
}
return {
...doc,
content,
wordCount: content.split(' ').length,
cleanedAt: new Date()
};
}Langkah 4: Pengesahan Kualiti
Gunakan AI untuk menilai kualiti kandungan:
// Analyze content quality
const response = await fetch('https://crawlforge.dev/api/v1/tools/analyze_content', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
content: doc.content
})
});
const { data } = await response.json();
// Filter based on analysis
if (data.language !== 'en') {
// Skip non-English content (or separate by language)
}
if (data.readability.score < 30) {
// Skip content that's too technical/unreadable
}
if (data.sentiment.toxic > 0.5) {
// Skip potentially harmful content
}Kos: 3 credits setiap panggilan analyze_content
Langkah 5: Penyahduaan
Buang hampir-pendua:
import { simhash } from './hashing';
const seen = new Map<string, string>(); // hash -> url
function isDuplicate(doc: CleanedDocument): boolean {
const hash = simhash(doc.content);
for (const [existingHash, existingUrl] of seen) {
const similarity = hammingDistance(hash, existingHash);
if (similarity > 0.95) {
console.log(`Duplicate: ${doc.url} ~= ${existingUrl}`);
return true;
}
}
seen.set(hash, doc.url);
return false;
}Kualiti Data untuk Latihan LLM
Metrik Kualiti untuk Dijejaki
| Metrik | Sasaran | Mengapa Ia Penting |
|---|---|---|
| Dokumen unik | >95% | Mengelakkan penghafalan |
| Purata kiraan perkataan | 200-5000 | Panjang konteks yang seimbang |
| Ketulenan bahasa | >99% | Isyarat latihan yang konsisten |
| Skor kebolehbacaan | 40-80 | Teks berkualiti manusia |
| Kesegaran | <1 tahun | Maklumat semasa |
Format untuk Latihan
Untuk penalaan halus LLM, keluarkan JSONL:
{"text": "Document content here...", "source": "docs.example.com", "category": "tutorial"}
{"text": "Another document...", "source": "blog.example.com", "category": "article"}Untuk sistem RAG, sertakan embedding:
{"text": "...", "embedding": [0.123, 0.456, ...], "metadata": {"url": "...", "title": "..."}}Menskalakan Talian Paip Anda
Pengoptimuman Credit
Untuk pengumpulan berskala besar:
- Mulakan dengan map_site (2 credits) untuk menemui URL
- Gunakan batch_scrape (5 credits/50 URL) dan bukannya panggilan individu
- Langkau analyze_content untuk sumber yang diketahui baik
- Cache secara agresif - URL yang sama = kandungan yang sama
Anggaran Kos
| Saiz Set Data | Alat | Credits | Kos (Pro Plan) |
|---|---|---|---|
| 1K dok | map + batch | ~500 | $1 |
| 10K dok | map + batch | ~2,500 | $5 |
| 100K dok | map + batch | ~15,000 | $30 |
| 1M dok | map + batch + analysis | ~100,000 | $200 |
Kemas Kini Bertokok
Jangan scrape semula segala-galanya:
// Check for changes before re-scraping
const response = await fetch('https://crawlforge.dev/api/v1/tools/track_changes', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: doc.url,
lastHash: doc.contentHash
})
});
const { data } = await response.json();
if (data.hasChanges) {
// Re-scrape and update
} else {
// Skip, content unchanged
}Kos: 3 credits setiap panggilan track_changes
Perangkap Biasa
1. Scraping Berlebihan
Masalah: Mengumpul terlalu banyak data berkualiti rendah Penyelesaian: Kualiti > kuantiti. 100K dokumen yang baik mengatasi 1M yang sederhana.
2. Mengabaikan Kualiti Data
Masalah: Melatih dengan data berhingar Penyelesaian: Laburkan dalam pembersihan dan pengesahan. Gunakan analyze_content.
3. Pelanggaran Hak Cipta
Masalah: Menggunakan kandungan berhak cipta tanpa kebenaran Penyelesaian: Berpegang pada sumber yang permisif. Semak robots.txt dan ToS.
4. Kehabisan Had Kadar
Masalah: Disekat oleh laman sasaran Penyelesaian: Gunakan stealth_mode (5 credits) untuk laman sensitif. Hormati kelewatan crawl.
5. Data Basi
Masalah: Melatih dengan maklumat lapuk Penyelesaian: Sediakan scrape berkala dengan track_changes.
Kajian Kes: Membina Set Data Dokumentasi
Matlamat: Cipta set data latihan daripada dokumentasi teknikal untuk pembantu kod.
Sumber
- Dokumen rangka kerja rasmi (React, Vue, Next.js, dll.)
- Rujukan API
- Laman tutorial dengan lesen permisif
Talian Paip
const SOURCES = [
'https://react.dev/learn',
'https://vuejs.org/guide',
'https://nextjs.org/docs',
// ... more sources
];
async function buildDataset() {
const documents = [];
for (const source of SOURCES) {
// 1. Map site structure
const siteMap = await mapSite(source);
// 2. Filter to documentation pages
const docUrls = siteMap.urls.filter(url =>
url.includes('/docs') ||
url.includes('/guide') ||
url.includes('/learn')
);
// 3. Batch scrape
const scraped = await batchScrape(docUrls);
// 4. Clean and validate
for (const doc of scraped) {
const cleaned = cleanDocument(doc);
if (cleaned && !isDuplicate(cleaned)) {
documents.push(cleaned);
}
}
}
// 5. Export
await exportToJSONL(documents, 'training_data.jsonl');
console.log(`Dataset: ${documents.length} documents`);
}Keputusan
- Sumber: 12 laman dokumentasi
- Halaman discrape: 15,847
- Selepas pembersihan: 12,392 dokumen
- Selepas penyahduaan: 11,108 dokumen unik
- Jumlah perkataan: 8.2M
- Credits digunakan: ~4,500
- Kos: ~$9 (Professional plan)
Kesimpulan
Web scraping untuk data latihan AI ialah keseimbangan antara kuantiti, kualiti, dan etika. Prinsip utama:
- Mulakan dengan matlamat yang jelas - Apa yang model anda perlukan?
- Utamakan kualiti - Data bersih mengatasi lebih banyak data
- Hormati sumber - Patuhi robots.txt dan had kadar
- Sahkan dengan teliti - Gunakan semakan kualiti automatik
- Lelar secara berterusan - Model bertambah baik dengan data yang lebih baik
CrawlForge menyediakan alat untuk membina talian paip data gred pengeluaran. Mulakan dengan 1,000 credits percuma di crawlforge.dev/signup.
Sumber:
- API Reference - Dokumentasi alat penuh
- Batch Processing Guide - Scraping berskala besar
- Credit Optimization - Kurangkan kos
Cuba sendiri — tiada pendaftaran diperlukan
Jalankan mana-mana daripada 27 alat scraping dan pengekstrakan CrawlForge dalam playground, kemudian mula secara percuma dengan 1,000 credits.
1,000 credits percuma • Isi semula setiap bulan • Tiada kad kredit diperlukan
Tag
Tentang Penulis
Kekal dikemas kini dengan pandangan terkini
Dapatkan tutorial, kemas kini produk dan petua web scraping terus ke peti masuk anda.
Tiada spam. Berhenti melanggan bila-bila masa.