Langkau ke kandungan
Alat Berstruktur2 credits

scrape_structured

Ekstrak data berstruktur daripada mana-mana halaman web menggunakan pemilih CSS tersuai. Sesuai untuk scraping produk e-dagang, pengagregatan berita dan apa-apa keperluan pengekstrakan data tersuai.

Kes Penggunaan

Scraping Produk E-Dagang

Ekstrak tajuk produk, harga, penerangan dan imej daripada kedai dalam talian

Pengekstrakan Artikel Berita

Ekstrak tajuk utama, penulis, tarikh dan kandungan daripada tapak berita

Transformasi Data Tersuai

Petakan mana-mana struktur HTML kepada skema JSON yang anda kehendaki

Penyenaraian Hartanah

Ekstrak butiran hartanah, harga dan imej daripada tapak penyenaraian

Endpoint

POST/api/v1/tools/scrape_structured
Auth Required
1 req/s pada pelan Free
2 credits

Parameters

NameTypeRequiredDefaultDescription
url
stringOptional-
Halaman untuk diambil dan diekstrak. Sama ada `url` atau `html` diperlukan.
Example: https://example.com/product
html
stringOptional-
HTML mentah untuk dihurai dan bukannya diambil. Gandingkan dengan `base_url` untuk menyelesaikan nilai atribut relatif.
Example: <html>...</html>
selectors
objectRequired-
Memetakan nama medan anda kepada pemilih CSS. Sekurang-kurangnya satu entri diperlukan — nama medan itu milik anda dan kembali tanpa berubah dalam keputusan.
Example: {"title": "h1.product-title", "price": ".price", "description": ".product-desc"}
base_url
stringOptional-
Asas untuk menyelesaikan URL relatif yang ditemui dalam atribut yang diekstrak.
Example: https://example.com
multiple
booleanOptionalfalse
Apabila true, ekstrak senarai item berulang dan bukannya satu rekod. Ia mengubah bentuk respons — lihat di bawah.
Example: true
clean_text
booleanOptionaltrue
Runtuhkan ruang putih dan pangkas teks yang diekstrak.
Example: true
include_attributes
arrayOptional-
Turut tangkap atribut HTML ini daripada setiap elemen yang sepadan, bukan teksnya sahaja.
Example: ["href", "src", "alt"]
max_items
numberOptional100
Bilangan maksimum item yang dipulangkan apabila `multiple` true, 1-1000.
Example: 100
respect_robots
booleanOptionaltrue
Hormati robots.txt tapak sasaran. Dibiarkan pada `true`, laluan yang dilarang untuk `CrawlForge` ditolak dengan 403 sebelum apa-apa diambil dan tiada credits dicaj. Tetapkan kepada `false` hanya untuk sasaran yang anda mempunyai perjanjian sendiri dengannya — respons kemudiannya membawa entri `warnings` dan tindakan mengatasi itu direkodkan pada API key anda.
Example: true

Pemilih CSS:

Gunakan mana-mana sintaks pemilih CSS yang sah. Corak biasa:

  • .className - Pilih mengikut kelas
  • #id - Pilih mengikut ID
  • tag.class - Gabungkan tag dan kelas
  • .parent > .child - Anak langsung
  • [data-id="value"] - Pemilih atribut

Contoh Permintaan

cURL - E-Commerce Product

terminalBash
curl -X POST https://crawlforge.dev/api/v1/tools/scrape_structured \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/product/123",
    "selectors": {
      "title": "h1.product-title",
      "price": ".price-value",
      "currency": ".price-currency",
      "description": ".product-description",
      "image": "img.main-image",
      "rating": ".rating-value",
      "availability": ".stock-status"
    }
  }'

TypeScript - News Article

scrapeStructured.tsTypescript
// npm install crawlforge-sdk
import { CrawlForge } from 'crawlforge-sdk';

const client = new CrawlForge({ apiKey: process.env.CRAWLFORGE_API_KEY });

const result = await client.scrapeStructured({
  url: 'https://example.com/news/article-123',
  selectors: {
    headline: 'h1.article-title',
    author: '.author-name',
    publishDate: 'time.publish-date',
    category: '.category-tag',
    content: '.article-body',
    image: '.article-image img'
  }
});

// result.data is untyped in crawlforge-sdk 0.1 — its shape is the Response Example below.
const article = result.data as { headline: string; author: string; publishDate: string };
console.log('Article:', article.headline);
console.log('By:', article.author);
console.log('Published:', article.publishDate);

Python - Real Estate Listing

scrape_structured.pyPython
# pip install crawlforge
from crawlforge import CrawlForge

client = CrawlForge()  # reads CRAWLFORGE_API_KEY

result = client.scrape_structured(
    url='https://example.com/property/456',
    selectors={
        'address': '.property-address',
        'price': '.listing-price',
        'bedrooms': '.bed-count',
        'bathrooms': '.bath-count',
        'sqft': '.square-feet',
        'description': '.property-description',
        'images': '.gallery img'
    },
)

# result.data is a plain dict — its shape is the Response Example below.
property_data = result.data
print(f"Property: {property_data['address']}")
print(f"Price: {property_data['price']}")
print(f"Beds: {property_data['bedrooms']}")
print(f"Baths: {property_data['bathrooms']}")

Contoh Respons

200 OK320ms
{
"success": true,
"data": {
"title": "Premium Wireless Headphones",
"price": "299.99",
"currency": "USD",
"description": "High-quality wireless headphones with active noise cancellation and 30-hour battery life.",
"image": "https://example.com/images/headphones.jpg",
"rating": "4.7",
"availability": "In Stock"
},
"credits_used": 2,
"credits_remaining": 998,
"processing_time": 320
}
Field Descriptions
data.titleDiekstrak daripada pemilih h1.product-title
data.priceDiekstrak daripada pemilih .price-value
data.descriptionDiekstrak daripada pemilih .product-description
credits_usedCredits ditolak untuk permintaan ini (2 setiap scrape)

Pengendalian Ralat

Disekat oleh robots.txt (403 Forbidden)

robots.txt tapak sasaran melarang laluan ini untuk CrawlForge. Tetapkan respect_robots: false untuk mengatasinya jika anda mempunyai perjanjian sendiri dengan sasaran — tindakan mengatasi itu direkodkan pada API key anda. Tindakan mengatasi itu tidak sampai kepada hos yang berada dalam senarai penarikan diri kekal CrawlForge, yang ditolak tanpa mengira nilai respect_robots.

Kos Credit

2 credits
2 credits setiap permintaan
Setiap scrape berstruktur berkos 2 credits, tanpa mengira bilangan pemilih.

Petua: Untuk scraping berbilang halaman dengan struktur yang sama, gunakan batch_scrape untuk kecekapan yang lebih baik.

Alat Berkaitan