Go SDK

अवलोकन

आधिकारिक Scrapeless Go SDK ब्राउज़र स्वचालन, स्क्रैपिंग, क्रॉलिंग, प्रॉक्सी, खोज परिणामों और AI चैट निष्कर्षण तक पहुंच प्रदान करता है। यह गाइड SDK रिपॉजिटरी के READMEका अनुसरण करता है, जिसमें चलाए जा सकने वाले उदाहरण और कॉन्फ़िगरेशन विवरण शामिल हैं।

आवश्यकताएँ

रिपॉजिटरी के go.modद्वारा Go 1.24.0 या उसके बाद का संस्करण आवश्यक है। एक Go मॉड्यूल के अंदर स्थापना कमांड चलाएं। एक नए प्रोजेक्ट के लिए, go mod init example.com/scrapeless-demoके साथ एक को आरंभ करें।

इंस्टॉलेशन

go get -u github.com/scrapeless-ai/sdk-go

प्रमाणीकरण / API Key

Scrapeless dashboard में लॉग इन करें और एक API key बनाएँ। उदाहरण चलाने से पहले इसे export करें:

export SCRAPELESS_API_KEY="YOUR_API_KEY"

अपनी API key को source control में commit करने के बजाय अपने environment या secret manager में रखें।

त्वरित प्रारंभ

इसे main.go के रूप में सहेजें और अपनी API key सेट करने के बाद go run . चलाएँ। प्रत्येक सेवा को उसके संबंधित With...() विकल्प के साथ सक्षम करें और काम पूरा होने पर क्लाइंट को बंद करें।

package main
 
import (
    "context"
    "fmt"
    "log"
 
    "github.com/scrapeless-ai/sdk-go/scrapeless"
    "github.com/scrapeless-ai/sdk-go/scrapeless/services/universal"
)
 
func main() {
    client := scrapeless.New(scrapeless.WithUniversal())
    defer client.Close()
 
    result, err := client.Universal.CreateTask(context.Background(), universal.UniversalTaskRequest{
        Actor: universal.ScraperUniversal,
        Input: map[string]any{
            "url": "https://example.com",
            "method": "GET",
            "redirect": false,
        },
    })
    if err != nil {
        log.Print(err)
        return
    }
    fmt.Printf("%+v\n", result)
}

उत्पाद कवरेज मैट्रिक्स

उत्पादSDK सेवासक्षम करेंकवरेज
Agent Browserclient.Browserscrapeless.WithBrowser()रिमोट browser sessions बनाएँ और प्रबंधित करें।
ब्राउज़र प्रोफाइलclient.Profilescrapeless.WithProfile()sessions के बीच browser डेटा बनाए रखें।
Scraping APIclient.Scrapingscrapeless.WithScraping()website actors का उपयोग करके संरचित डेटा निकालें।
Web Unlockerclient.Universalscrapeless.WithUniversal()सुरक्षित websites से सामग्री प्राप्त करें।
Crawlclient.Crawlscrapeless.WithCrawl()किसी पेज को scrape करें या किसी website को crawl करें।
Google Search APIclient.DeepSerpscrapeless.WithDeepSerp()search engine परिणाम निकालें।
Proxiesclient.Proxyscrapeless.WithProxy()proxy connection URLs जनरेट करें।
AI Scraperclient.AIScraperscrapeless.WithAIScraper()AI chat कार्य बनाएँ और उनकी स्थिति व परिणाम प्राप्त करें।

सेवाएं वैकल्पिक हैं। उदाहरण के लिए, ब्राउज़र और AI Scraper समर्थन दोनों को scrapeless.New(scrapeless.WithBrowser(), scrapeless.WithAIScraper())के साथ आरंभ करें। README में अतिरिक्त कार्यप्रवाह के लिए Client.Captcha, Client.Server, और Client.Router के बारे में भी दस्तावेजीकरण है।

उपयोग के उदाहरण

ब्राउज़र

package main
 
import (
	"context"
	"github.com/scrapeless-ai/sdk-go/scrapeless"
	"github.com/scrapeless-ai/sdk-go/scrapeless/log"
	"github.com/scrapeless-ai/sdk-go/scrapeless/services/browser"
)
 
func main() {
	client := scrapeless.New(scrapeless.WithBrowser())
	defer client.Close()
 
	browserInfo, err := client.Browser.Create(context.Background(), browser.Actor{
		Input:        browser.Input{SessionTtl: "180"},
		ProxyCountry: "US",
	})
	if err != nil {
		panic(err)
	}
	log.Infof("%+v", browserInfo)
}

ब्राउज़र प्रोफाइल

package main
 
import (
	"context"
	"fmt"
	"github.com/scrapeless-ai/sdk-go/scrapeless"
)
 
func main() {
	client := scrapeless.New(scrapeless.WithProfile())
	defer client.Close()
 
	result, err := client.Profile.CreateProfile(context.Background(), "My Profile")
	if err != nil {
		panic(err)
	}
	fmt.Printf("%+v\n", result)
}

Scraping API

package main
 
import (
	"context"
	"github.com/scrapeless-ai/sdk-go/scrapeless"
	"github.com/scrapeless-ai/sdk-go/scrapeless/log"
	"github.com/scrapeless-ai/sdk-go/scrapeless/services/scraping"
)
 
func main() {
	client := scrapeless.New(scrapeless.WithScraping())
	defer client.Close()
 
	scrape, err := client.Scraping.Scrape(context.Background(), scraping.ScrapingTaskRequest{
		Actor: "scraper.google.search",
		Input: map[string]interface{}{
			"q": "nike site:www.nike.com",
		},
		ProxyCountry: "US",
	})
	if err != nil {
		log.Errorf("scraping create err:%v", err)
		return
	}
	log.Infof("%+v", scrape)
}

Web Unlocker

Web Unlocker का उपयोग करके वेबसाइटों से डेटा निकालें ( client.Universal के रूप में उजागर)।

package main
 
import (
	"context"
	"fmt"
	"github.com/scrapeless-ai/sdk-go/scrapeless"
	"github.com/scrapeless-ai/sdk-go/scrapeless/services/universal"
)
 
func main() {
	client := scrapeless.New(scrapeless.WithUniversal())
	defer client.Close()
 
	result, err := client.Universal.CreateTask(context.Background(), universal.UniversalTaskRequest{
		Actor: universal.ScraperUniversal,
		Input: map[string]any{
			"url":      "https://example.com",
			"method":   "GET",
			"redirect": false,
		},
	})
	if err != nil {
		panic(err)
	}
	fmt.Printf("%+v\n", result)
}

Crawl

package main
 
import (
	"context"
	"github.com/scrapeless-ai/sdk-go/scrapeless"
	"github.com/scrapeless-ai/sdk-go/scrapeless/log"
	"github.com/scrapeless-ai/sdk-go/scrapeless/services/crawl"
)
 
func main() {
	client := scrapeless.New(scrapeless.WithCrawl())
	defer client.Close()
 
	// Crawl
	response, err := client.Crawl.CrawlUrl(context.Background(), "https://redditinc.com/blog", crawl.CrawlParams{
		Limit: 10,
		ScrapeOptions: crawl.ScrapeOptions{
			Formats: []string{"links",
				"markdown",
				"html",
				"screenshot"},
		},
		BrowserOptions: crawl.ICreateBrowser{
			SessionName:      "Crawl",
			SessionTTL:       "900",
			SessionRecording: "true",
			ProxyCountry:     "ANY",
		},
	})
	if err != nil {
		panic(err)
	}
	log.Infof("Crawl response: %v", response)
 
	// scrape
	scrapeResponse, err := client.Crawl.ScrapeUrl(context.Background(), "https://docs.scrapeless.com/en/docs/get-started/overview/", crawl.ScrapeOptions{
		BrowserOptions: crawl.ICreateBrowser{
			SessionName:      "Crawl",
			SessionTTL:       "900",
			SessionRecording: "true",
			ProxyCountry:     "ANY",
		},
	})
	if err != nil {
		panic(err)
	}
	log.Infof("Scrape response: %v", scrapeResponse)
}

प्रॉक्सी

package main
 
import (
	"context"
	"fmt"
	"github.com/scrapeless-ai/sdk-go/scrapeless"
	"github.com/scrapeless-ai/sdk-go/scrapeless/services/proxies"
)
 
func main() {
	client := scrapeless.New(scrapeless.WithProxy())
	defer client.Close()
 
	result, err := client.Proxy.Proxy(context.Background(), proxies.ProxyActor{
		Country:         "US",
		SessionDuration: 30,
		SessionId:       "my-session",
		Gateway:         "your-proxy-gateway:port",
	})
	if err != nil {
		panic(err)
	}
	fmt.Printf("%+v\n", result)
}

AI Scraper

brand mentions की निगरानी करने, उत्तरों की तुलना करने, और नवीनतम मॉडलों से competitive intelligence का विश्लेषण करने के लिए बड़े पैमाने पर AI chat सामग्री निकालें। एक ही integration के माध्यम से URLs, prompts, Markdown उत्तर, citations, और बहुत कुछ प्राप्त करें।

समर्थित actor में scraper.chatgpt, scraper.perplexity, scraper.copilot, scraper.gemini, scraper.aimode, scraper.overview, scraper.grok, और scraper.alexaशामिल हैं। input JSON actor पर निर्भर करता है; विस्तृत पैरामीटर के लिए AI Scraper दस्तावेजीकरण देखें। वैकल्पिक webhook JSON में एक कॉलबैक urlहोता है।

package main
 
import (
	"context"
	"encoding/json"
	"fmt"
 
	"github.com/scrapeless-ai/sdk-go/scrapeless"
	"github.com/scrapeless-ai/sdk-go/scrapeless/services/aiscraper"
)
 
func main() {
	client := scrapeless.New(scrapeless.WithAIScraper()) // Uses SCRAPELESS_API_KEY
	defer client.Close()
	ctx := context.Background()
 
	task, err := client.AIScraper.CreateTask(ctx, aiscraper.TaskRequest{
		Actor: "scraper.chatgpt",
		Input: map[string]any{
			"prompt":     "Most reliable proxy service for data extraction",
			"country":    "US",
			"web_search": true,
		},
		// Optional: Webhook: map[string]any{"url": "https://your-webhook.example.com"},
	})
	if err != nil {
		panic(err)
	}
	fmt.Println("Created task:", string(task))
 
	var created struct {
		TaskID string `json:"task_id"`
	}
	if err := json.Unmarshal(task, &created); err != nil {
		panic(err)
	}
	result, err := client.AIScraper.GetTaskResult(ctx, created.TaskID)
	if err != nil {
		panic(err)
	}
	fmt.Println("Task status and result:", string(result))
	// If status is "running", call GetTaskResult again later.
	// If status is "failed", message contains the failure reason.
}

दोनों विधियां API JSON को अपरिवर्तित लौटाती हैं। निर्माण task_id, status, और जब उपलब्ध हो, तो task_resultलौटाता है। परिणाम पुनर्प्राप्ति status, task_result उपलब्ध होने पर, और विफलता पर message लौटाती है। स्थिति success, failed, या runningहै; SDK स्वचालित रूप से पोल नहीं करता है।

प्रतिक्रियाएँ रॉ JSON बाइट्स ([]byte) होती हैं, जो प्रत्येक API फ़ील्ड को संरक्षित करती हैं। आवश्यकता अनुसार उन्हें encoding/json से डीकोड करें।

Google Search API

package main
 
import (
	"context"
	scrapeless "github.com/scrapeless-ai/sdk-go/scrapeless"
	"github.com/scrapeless-ai/sdk-go/scrapeless/log"
	"github.com/scrapeless-ai/sdk-go/scrapeless/services/deepserp"
)
 
func main() {
	client := scrapeless.New(scrapeless.WithDeepSerp())
	defer client.Close()
 
	scrape, err := client.DeepSerp.Scrape(context.Background(), deepserp.DeepserpTaskRequest{
		Actor: "scraper.google.search",
		Input: map[string]interface{}{
			"q": "nike site:www.nike.com",
		},
		ProxyCountry: "US",
	})
	if err != nil {
		log.Errorf("scraping create err:%v", err)
		return
	}
	log.Infof("%+v", scrape)
}

अधिक पूर्ण एकीकरण के लिए, रिपॉजिटरी की example निर्देशिकाब्राउज़ करें।

त्रुटि प्रबंधन

किसी सेवा प्रतिक्रिया का उपयोग करने से पहले लौटाई गई error की जाँच करें। व्यक्तिगत अनुरोधों को सीमित करने के लिए एक context deadline का उपयोग करें और क्लाइंट संसाधनों को मुक्त करने के लिए defer client.Close() का उपयोग करें।

यह उदाहरण मौजूदा AI Scraper कार्य पुनः प्राप्त करता है। YOUR_TASK_ID को CreateTaskद्वारा लौटाए गए ID से बदलें।

package main
 
import (
    "context"
    "fmt"
    "log"
    "time"
 
    "github.com/scrapeless-ai/sdk-go/scrapeless"
)
 
func main() {
    client := scrapeless.New(scrapeless.WithAIScraper())
    defer client.Close()
 
    ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
    defer cancel()
 
    result, err := client.AIScraper.GetTaskResult(ctx, "YOUR_TASK_ID")
    if err != nil {
        log.Printf("Could not retrieve task: %v", err)
        return
    }
    fmt.Println(string(result))
}

AI Scraper HTTP विफलता एक त्रुटि लौटाता है। सफल HTTP अनुरोध में भी status: "failed"के साथ एक कार्य हो सकता है; JSON डिकोड करने के बाद प्रतिक्रिया के status और message फ़ील्ड की जांच करें।

कॉन्फ़िगरेशन / एनवायरनमेंट वेरिएबल

API key आवश्यक है। Endpoint overrides वैकल्पिक हैं; तालिका उनके डिफ़ॉल्ट दिखाती है।

प्रोग्राम प्रारंभ करने से पहले एनवायरनमेंट वेरिएबल सेट करें। SDK वर्किंग डायरेक्टरी से एक .env फ़ाइल भी पढ़ता है। AI Scraper अनुरोधों में 30-सेकंड का HTTP टाइमआउट होता है; प्रति-अनुरोध कम समयसीमा के लिए context.WithTimeout का उपयोग करें।

एनवायरनमेंट वेरिएबलउद्देश्य / डिफ़ॉल्ट
SCRAPELESS_API_KEYdashboard से आवश्यक API key।
SCRAPELESS_BASE_API_URLhttps://api.scrapeless.com
SCRAPELESS_BROWSER_API_URLhttps://browser.scrapeless.com
SCRAPELESS_CRAWL_API_URLhttps://api.scrapeless.com

सहायता

SDK को MIT लाइसेंसके तहत जारी किया गया है।

संबंधित प्रोजेक्ट्स