Pada halaman ini
Satu perubahan harga daripada seorang pesaing boleh merugikan anda berjuta-juta dalam hasil yang hilang. Namun, kebanyakan syarikat masih memantau harga secara manual -- menugaskan penganalisis untuk menyemak laman web pesaing setiap minggu, menyalin-tampal data ke dalam hamparan, dan menandakan anomali dengan mata kasar. Apabila perubahan harga dikesan, kerosakan sudah berlaku.
CrawlForge membolehkan anda membina sistem pemantauan harga yang automatik sepenuhnya yang menyemak beribu-ribu halaman produk setiap hari, mengesan perubahan dalam beberapa minit, dan menyalurkan data berstruktur terus ke dalam saluran keputusan anda. Panduan ini membimbing anda melalui keseluruhan seni bina.
Kandungan
- Mengapa Pemantauan Harga Automatik Penting
- Gambaran Keseluruhan Seni Bina
- Langkah 1: Tentukan Halaman Sasaran Anda
- Langkah 2: Ekstrak Data Harga
- Langkah 3: Tangani Halaman Harga Dinamik
- Langkah 4: Bina Saluran Pengesanan Perubahan
- Langkah 5: Sediakan Amaran dan Pelaporan
- Analisis Kos Credits
- Keputusan dan Manfaat
- Soalan Lazim
Mengapa Pemantauan Harga Automatik Penting
Dalam e-dagang dan SaaS, penetapan harga ialah tuas terbesar untuk pengoptimuman hasil. Penyelidikan daripada McKinsey menunjukkan bahawa peningkatan 1% dalam penetapan harga menghasilkan peningkatan 11% dalam keuntungan -- lebih daripada mana-mana tuas lain termasuk volum atau pengurangan kos. Menjejaki trend harga yang lebih luas melalui set data awam seperti BLS Consumer Price Index boleh membantu memberi konteks kepada pergerakan pesaing.
Pemantauan harga automatik menyelesaikan tiga masalah kritikal:
- Kelajuan: Kesan perubahan harga pesaing dalam beberapa jam, bukan beberapa minggu
- Liputan: Pantau beribu-ribu SKU serentak merentas berpuluh-puluh pesaing
- Ketepatan: Hapuskan kesilapan manusia daripada pengumpulan data manual
CrawlForge paling sesuai untuk pasukan yang perlu memantau penetapan harga merentas berbilang pesaing pada skala besar, kerana model berasaskan creditnya bermakna anda membayar setiap ekstraksi -- bukan setiap kerusi atau setiap bulan kapasiti yang tidak digunakan.
Gambaran Keseluruhan Seni Bina
Sistem ini menggunakan empat alat CrawlForge yang bekerja bersama:
| Component | Tool | Credits | Purpose |
|---|---|---|---|
| Penemuan halaman | map_site | 3 | Cari semua halaman produk/harga |
| Ekstraksi statik | scrape_structured | 2 | Ekstrak harga daripada HTML standard |
| Ekstraksi dinamik | scrape_with_actions | 5 | Tangani harga yang dipaparkan JavaScript |
| Penjejakan perubahan | track_changes | 3 | Kesan perbezaan harga dari semasa ke semasa |
Data mengalir melalui saluran yang ringkas: Temui halaman -> Ekstrak harga -> Bandingkan dengan garis dasar -> Beri amaran tentang perubahan.
Langkah 1: Tentukan Halaman Sasaran Anda
Mulakan dengan memetakan laman pesaing anda untuk menemui semua halaman produk dan harga secara automatik.
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
// Initialize the MCP client connected to CrawlForge
const client = new Client({
name: 'price-monitor',
version: '1.0.0',
});
// Discover all product pages on a competitor site
async function discoverProductPages(competitorUrl: string): Promise<string[]> {
const siteMap = await client.callTool({
name: 'map_site',
arguments: {
url: competitorUrl,
max_urls: 500,
include_metadata: true,
group_by_path: true,
},
});
const result = JSON.parse(siteMap.content[0].text);
// Filter for product and pricing pages
const productPages = result.urls.filter((url: string) =>
url.includes('/product') ||
url.includes('/pricing') ||
url.includes('/plans')
);
return productPages;
}
// Usage: discover pages for each competitor
const competitors = [
'https://competitor-a.com',
'https://competitor-b.com',
'https://competitor-c.com',
];
for (const site of competitors) {
const pages = await discoverProductPages(site);
console.log(`Found ${pages.length} product pages on ${site}`);
}Langkah penemuan awal ini menelan kos 3 credits bagi setiap laman pesaing. Jalankannya setiap minggu untuk menangkap halaman produk baharu.
Langkah 2: Ekstrak Data Harga
Untuk halaman HTML standard yang harganya dipaparkan di sisi pelayan, gunakan scrape_structured dengan pemilih CSS. Apabila menyasarkan laman e-dagang yang mengikut perbendaharaan kata Schema.org Offer, anda boleh mengekstrak data berstruktur harga secara terus.
interface PriceData {
productName: string;
price: string;
currency: string;
url: string;
extractedAt: string;
}
async function extractPrices(urls: string[]): Promise<PriceData[]> {
const results: PriceData[] = [];
// Batch scrape all URLs for efficiency
const batchResult = await client.callTool({
name: 'batch_scrape',
arguments: {
urls: urls.map(url => ({
url,
selectors: {
productName: 'h1.product-title, [data-testid="product-name"]',
price: '.price-current, [data-testid="price"], .plan-price',
currency: '.price-currency, [data-currency]',
},
})),
maxConcurrency: 10,
includeMetadata: true,
},
});
const batch = JSON.parse(batchResult.content[0].text);
for (const page of batch.results) {
if (page.status === 'success') {
results.push({
productName: page.data.productName || 'Unknown',
price: page.data.price || 'N/A',
currency: page.data.currency || 'USD',
url: page.url,
extractedAt: new Date().toISOString(),
});
}
}
return results;
}Menggunakan batch_scrape (5 credits) berbanding panggilan scrape_structured individu (2 credits setiap satu) adalah lebih cekap apabila memproses 3+ URL serentak.
Langkah 3: Tangani Halaman Harga Dinamik
Banyak halaman harga SaaS moden memaparkan harga dengan JavaScript, menggunakan suis togol untuk pengebilan bulanan/tahunan, atau memerlukan interaksi untuk mendedahkan harga enterprise. Gunakan scrape_with_actions untuk halaman ini.
async function extractDynamicPricing(url: string) {
const result = await client.callTool({
name: 'scrape_with_actions',
arguments: {
url,
actions: [
// Wait for pricing to render
{ type: 'wait', selector: '.pricing-table', timeout: 5000 },
// Click "Annual" toggle to see annual pricing
{ type: 'click', selector: '[data-billing="annual"]' },
// Wait for prices to update
{ type: 'wait', timeout: 1000 },
// Take a screenshot for verification
{ type: 'screenshot', description: 'Annual pricing view' },
],
extractionOptions: {
selectors: {
plans: '.plan-card',
prices: '.plan-price',
features: '.plan-features li',
},
includeMetadata: true,
},
},
});
return JSON.parse(result.content[0].text);
}Ini mengendalikan halaman yang memerlukan interaksi pelayar -- menogol kitaran pengebilan, mengembangkan akordion, atau menatal untuk memuatkan kandungan lazy. Setiap ekstraksi menelan kos 5 credits.
Langkah 4: Bina Saluran Pengesanan Perubahan
Dengan data harga yang diekstrak, gunakan track_changes untuk mengesan perbezaan antara larian pemantauan.
async function detectPriceChanges(
competitorUrl: string,
currentPrices: PriceData[]
) {
// Create or compare against baseline
const changeResult = await client.callTool({
name: 'track_changes',
arguments: {
url: competitorUrl,
operation: 'compare',
content: JSON.stringify(currentPrices),
trackingOptions: {
granularity: 'element',
trackText: true,
ignoreWhitespace: true,
significanceThresholds: {
minor: 0.05, // <5% price change = minor
moderate: 0.15, // 5-15% = moderate
major: 0.30, // >15% = major alert
},
},
},
});
const changes = JSON.parse(changeResult.content[0].text);
if (changes.hasChanges) {
console.log(`Price changes detected on ${competitorUrl}:`);
for (const change of changes.differences) {
console.log(` ${change.field}: ${change.oldValue} -> ${change.newValue}`);
}
}
return changes;
}Langkah 5: Sediakan Amaran dan Pelaporan
Gabungkan pengesanan perubahan dengan amaran automatik untuk melengkapkan kitaran.
interface PriceAlert {
competitor: string;
product: string;
oldPrice: string;
newPrice: string;
changePercent: number;
severity: 'minor' | 'moderate' | 'major';
detectedAt: string;
}
async function runDailyMonitoring(competitors: string[]): Promise<PriceAlert[]> {
const alerts: PriceAlert[] = [];
for (const competitorUrl of competitors) {
// Step 1: Discover pages (weekly, cached)
const pages = await discoverProductPages(competitorUrl);
// Step 2: Extract current prices
const prices = await extractPrices(pages);
// Step 3: Detect changes
const changes = await detectPriceChanges(competitorUrl, prices);
// Step 4: Generate alerts for significant changes
if (changes.hasChanges) {
for (const diff of changes.differences) {
const changePercent = calculatePercentChange(
diff.oldValue,
diff.newValue
);
alerts.push({
competitor: competitorUrl,
product: diff.field,
oldPrice: diff.oldValue,
newPrice: diff.newValue,
changePercent,
severity: changes.significance,
detectedAt: new Date().toISOString(),
});
}
}
}
return alerts;
}
function calculatePercentChange(oldVal: string, newVal: string): number {
const old = parseFloat(oldVal.replace(/[^0-9.]/g, ''));
const current = parseFloat(newVal.replace(/[^0-9.]/g, ''));
return ((current - old) / old) * 100;
}Analisis Kos Credits
Berikut ialah pecahan kos yang realistik untuk memantau 5 pesaing dengan ~100 halaman produk setiap satu:
| Operation | Tool | Credits | Frequency | Monthly Cost |
|---|---|---|---|---|
| Penemuan laman | map_site | 3 each | Mingguan (5 laman) | 60 credits |
| Ekstraksi statik | batch_scrape | 5 per batch | Harian (10 kelompok) | 1,500 credits |
| Ekstraksi dinamik | scrape_with_actions | 5 each | Harian (10 halaman) | 1,500 credits |
| Pengesanan perubahan | track_changes | 3 each | Harian (5 laman) | 450 credits |
| Total | ~3,510 credits/mo |
Ini muat dengan selesa dalam Professional plan pada $99/month (50,000 credits). Untuk operasi yang lebih kecil memantau 1-2 pesaing, Hobby plan pada $19/month (5,000 credits) berfungsi dengan baik.
Keputusan dan Manfaat
Sistem pemantauan harga yang dibina dengan baik memberikan hasil yang boleh diukur:
- Masa tindak balas: Kesan perubahan harga dalam tempoh 24 jam dan bukannya 1-2 minggu
- Liputan: Pantau 500+ halaman produk merentas 5+ pesaing serentak
- Penjimatan kos: Gantikan 10-20 jam/minggu kerja penganalisis manual
- Perlindungan hasil: Bertindak balas terhadap penurunan harga pesaing sebelum kehilangan bahagian pasaran
Gabungan batch_scrape untuk kecekapan dan scrape_with_actions untuk halaman yang kompleks bermakna anda boleh mengendalikan kedua-dua katalog e-dagang statik dan halaman harga SaaS moden yang banyak JavaScript dalam saluran yang sama.
Soalan Lazim
Berapa kerap saya patut menjalankan pemantauan harga?
Untuk e-dagang yang kerap berubah harga (Amazon, elektronik), jalankan setiap hari. Untuk halaman harga SaaS yang berubah setiap suku tahun, semakan mingguan sudah memadai. Model credit CrawlForge bermakna anda hanya membayar untuk apa yang anda gunakan -- tiada yuran tetap untuk kapasiti pemantauan yang tidak digunakan.
Bolehkah CrawlForge mengendalikan perlindungan anti-bot pada laman pesaing?
Ya. Jika ekstraksi standard gagal, naik taraf kepada stealth_mode (5 credits) yang merangkumi rawakan cap jari, putaran proxy residential, dan simulasi tingkah laku manusia. Kebanyakan halaman harga pesaing boleh diakses secara awam dan tidak memerlukan stealth.
Bagaimana pula dengan laman yang memerlukan log masuk untuk melihat harga?
Gunakan scrape_with_actions untuk mengautomasikan pengisian borang dan aliran pengesahan. Pilihan formAutoFill mengendalikan borang log masuk, dan CrawlForge mengekalkan keadaan sesi merentas rantaian tindakan.
Bersedia untuk mengautomasikan intelligen harga anda? Start free with 1,000 credits -- cukup untuk memantau 2 pesaing selama seminggu penuh. Tiada kad kredit diperlukan.
Sumber berkaitan:
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.