Gérer les pages rendues par le client
Use browser-backed retrieval when required content appears only after page JavaScript has executed.
Review request controlsAPI de navigateur
Obtenez du HTML rendu, des champs sélectionnés ou des captures de pages dynamiques. Envoyez les attentes et actions via une API REST ; nous exécutons le navigateur.
Une limite de navigateur plus claire
Use browser-backed retrieval when required content appears only after page JavaScript has executed.
Review request controlsWait for a lifecycle event, delay, selector, or documented instruction step instead of parsing whatever happens to arrive first.
See the request workflowReturn rendered HTML, a JSON response, a JSON DOM, selected fields, or a screenshot for the downstream task.
Compare output optionsDemande d' anatomie
Commencez par l'URL target et ajoutez uniquement les contrôles documentés nécessaires pour reproduire la page d'état de vos besoins d'application. Le guide des paramètres API de navigateur.
Définir comment le navigateur hébergé atteint et encadre la page.
api_keyurlmethodbodycountrytimeoutdevicewindow_widthwindow_heightblock_resourcesDites à la demande quand la page est prête et ce qu'il faut faire ensuite.
wait_untilwait_forwait_for_cssjs_instructionsauto_solveclickscrollTotyped_valueselectsubmitclick_and_navigateSélectionnez la requête qui doit être renvoyée par le navigateur.
screenshotscreenshot_optionsextract_rulesjson_responsejson_domPréférer un sélecteur observable ou un état de cycle de vie au lieu d'un retard arbitraire, garder les séquences d'action courtes et valider le contenu retourné en fonction de vos propres exigences commerciales.
Flux de travail de demande
Provide the URL, method, country, device, viewport, and timeout required for the test case.
Choose domcontentloaded, load, networkidle0, networkidle2, a delay, or a selector.
Apply an ordered js_instructions sequence when the page needs clicks, scrolling, values, selections, or navigation.
Receive the requested format or explicit error, then validate content before it enters the downstream system.
Un sélecteur ou une condition du cycle de vie de la page liée au contenu dont vous avez besoin.
Seules les actions nécessaires pour atteindre un état stable et répétable.
L'exécution du navigateur peut toujours échouer, mettre fin ou retourner du contenu qui a besoin d'une validation commerciale.
Contrat de production
Capturez la page rendue une fois, puis choisissez une sortie documentée qui correspond à un parseur existant, à une étape de validation, à un enregistrement de preuves ou à un flux de travail multimédia.
Retournez le corps de la page rendue pour un processus de partage ou d'archivage que votre équipe exploite.
text/htmlEnvelopper le corps avec une demande documentée et le contexte de réponse target pour inspection.
json_responseRecevoir le document de la page comme représentation JSON DOM pour le traversage en aval.
json_domExécuter des règles CSS ou XPath définies par le client et retourner le contenu sélectionné.
extract_rulesCapturez la page complète ou un élément sélectionné et recevez l'image comme base64.
screenshotIntégration des développeurs
Appeler le point final REST depuis votre serveur, garder la clé API hors du code client, paramètres de demande d'encode URL, définir un délai fini, et gérer délibérément les réponses non réussis.
Modèle de requête
Ces exemples attendent main Remplacez le sélecteur target et les actions par une séquence validée contre votre propre source éligible.
https://api.webscrapingapi.com/v1WSA_API_KEY dans l'environnement du serveurwait_for_css=mainjs_instructions: "${WSA_API_KEY:?Set WSA_API_KEY}"
ACTIONS='[{"action":"scrollTo","selector":"main","timeout":1000,"block":"start"}]'
curl --get --fail-with-body --max-time 120 \
"https://api.webscrapingapi.com/v1" \
--data-urlencode "api_key=$WSA_API_KEY" \
--data-urlencode "url=https://example.com/app" \
--data-urlencode "wait_for_css=main" \
--data-urlencode "js_instructions=$ACTIONS" \
--data-urlencode "json_response=1"import json
import os
import requests
api_key = os.getenv("WSA_API_KEY")
if not api_key:
raise RuntimeError("Set WSA_API_KEY")
response = requests.get(
"https://api.webscrapingapi.com/v1",
params={
"api_key": api_key,
"url": "https://example.com/app",
"wait_for_css": "main",
"js_instructions": json.dumps([{
"action": "scrollTo", "selector": "main",
"timeout": 1000, "block": "start"
}]),
"json_response": 1,
},
timeout=120,
)
response.raise_for_status()
print(response.json())const apiKey = process.env.WSA_API_KEY;
if (!apiKey) throw new Error("Set WSA_API_KEY");
const params = new URLSearchParams({
api_key: apiKey,
url: "https://example.com/app",
wait_for_css: "main",
js_instructions: JSON.stringify([{
action: "scrollTo", selector: "main",
timeout: 1000, block: "start"
}]),
json_response: "1",
});
const response = await fetch(
"https://api.webscrapingapi.com/v1?" + params,
{ signal: AbortSignal.timeout(120_000) }
);
if (!response.ok) throw new Error("API status " + response.status);
console.log(await response.json());<?php
$apiKey = getenv("WSA_API_KEY");
if (!$apiKey) throw new RuntimeException("Set WSA_API_KEY");
$actions = json_encode([[
"action" => "scrollTo", "selector" => "main",
"timeout" => 1000, "block" => "start",
]], JSON_THROW_ON_ERROR);
$query = http_build_query([
"api_key" => $apiKey,
"url" => "https://example.com/app",
"wait_for_css" => "main",
"js_instructions" => $actions,
"json_response" => 1,
]);
$client = curl_init("https://api.webscrapingapi.com/v1?" . $query);
curl_setopt_array($client, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 120,
]);
$body = curl_exec($client);
$status = curl_getinfo($client, CURLINFO_RESPONSE_CODE);
$error = curl_error($client);
curl_close($client);
if ($body === false) throw new RuntimeException($error);
if ($status >= 400) throw new RuntimeException("API status " . $status);
echo $body;package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
"time"
)
func main() {
apiKey := os.Getenv("WSA_API_KEY")
if apiKey == "" { panic("Set WSA_API_KEY") }
params := url.Values{}
params.Add("api_key", apiKey)
params.Add("url", "https://example.com/app")
params.Add("wait_for_css", "main")
params.Add("js_instructions", "[{\"action\":\"scrollTo\",\"selector\":\"main\",\"timeout\":1000,\"block\":\"start\"}]")
params.Add("json_response", "1")
client := &http.Client{Timeout: 120 * time.Second}
response, err := client.Get(
"https://api.webscrapingapi.com/v1?" + params.Encode(),
)
if err != nil { panic(err) }
defer response.Body.Close()
if response.StatusCode >= 400 {
panic(fmt.Sprintf("API status %d", response.StatusCode))
}
body, err := io.ReadAll(response.Body)
if err != nil { panic(err) }
fmt.Println(string(body))
}import java.net.URI;
import java.net.URLEncoder;
import java.net.http.*;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
public final class BrowserApiExample {
public static void main(String[] args) throws Exception {
var apiKey = System.getenv("WSA_API_KEY");
if (apiKey == null || apiKey.isBlank()) {
throw new IllegalStateException("Set WSA_API_KEY");
}
var actions = "[{\"action\":\"scrollTo\",\"selector\":\"main\"," +
"\"timeout\":1000,\"block\":\"start\"}]";
var query = "api_key=" + URLEncoder.encode(apiKey, StandardCharsets.UTF_8)
+ "&url=" + URLEncoder.encode("https://example.com/app", StandardCharsets.UTF_8)
+ "&wait_for_css=main"
+ "&js_instructions=" + URLEncoder.encode(actions, StandardCharsets.UTF_8)
+ "&json_response=1";
var request = HttpRequest.newBuilder()
.uri(URI.create("https://api.webscrapingapi.com/v1?" + query))
.timeout(Duration.ofSeconds(120)).GET().build();
var response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() >= 400) {
throw new RuntimeException("API status " + response.statusCode());
}
System.out.println(response.body());
}
}
using System.Net.Http;
var apiKey = Environment.GetEnvironmentVariable("WSA_API_KEY");
if (string.IsNullOrWhiteSpace(apiKey))
throw new InvalidOperationException("Set WSA_API_KEY");
var actions = "[{\"action\":\"scrollTo\",\"selector\":\"main\"," +
"\"timeout\":1000,\"block\":\"start\"}]";
var requestUrl = "https://api.webscrapingapi.com/v1?api_key="
+ Uri.EscapeDataString(apiKey)
+ "&url=" + Uri.EscapeDataString("https://example.com/app")
+ "&wait_for_css=main"
+ "&js_instructions=" + Uri.EscapeDataString(actions)
+ "&json_response=1";
using var client = new HttpClient {
Timeout = TimeSpan.FromSeconds(120)
};
var response = await client.GetAsync(requestUrl);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());require "json"
require "net/http"
require "uri"
api_key = ENV["WSA_API_KEY"]
raise "Set WSA_API_KEY" if api_key.nil? || api_key.empty?
uri = URI("https://api.webscrapingapi.com/v1")
uri.query = URI.encode_www_form(
api_key: api_key,
url: "https://example.com/app",
wait_for_css: "main",
js_instructions: [{
action: "scrollTo", selector: "main",
timeout: 1000, block: "start"
}].to_json,
json_response: 1
)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.open_timeout = 10
http.read_timeout = 120
response = http.get(uri.request_uri)
raise "API status #{response.code}" unless response.is_a?(Net::HTTPSuccess)
puts response.bodyPropriété opérationnelle
WebScrapingAPI
Votre équipe
Use Browser API only for eligible public pages. Review source terms, applicable requirements, and the Accord de service, then apply appropriate access, retention, and data-use policies.
Cas d'utilisation
Choix de produit
Votre équipe exécute le client HTTP, le navigateur ou le parseur, la politique de réessayer, la validation et le stockage.
Envoyez une URL pour une demande de page gérée avec des formats de rendu et de réponse documentés.
Définir la préparation, les actions prises en charge, le contexte et la sortie dans une demande REST côté serveur.
Planifiez une collection limitée lorsque l'unité de travail couvre des pages éligibles liées plutôt que la demande d'un navigateur.
Définir les sources, le schéma, la cadence, la qualité et la destination alors que WebScrapingAPI exploite le programme récurrent.
Orientation des prix
Commencez par une page dynamique représentative, puis validez la plus petite combinaison de contexte, de préparation, d'actions et de sortie qui répond à vos besoins.
FAQ
API de navigateur est une requête REST du côté du serveur qui charge une page Web publique admissible dans un navigateur hébergé, applique des attentes et des actions documentées et renvoie la réponse sélectionnée à votre application.
Les options de sortie documentées comprennent HTML brut, une enveloppe JSON, une représentation JSON DOM, des champs extraits définis par le client et une capture d'écran retournée sous forme de base64 à l'intérieur de la réponse.
Les instructions JavaScript documentées comprennent le clic, le clic et la navigation, le défilement, les valeurs typées, l'attribution de valeurs, la sélection, la soumission, le focus et les attentes.
Utilisez une valeur de cycle de vie de la page documentée, un retard ou un sélecteur CSS. Vous pouvez combiner wait_until, wait_for, wait_for_css et les attentes au niveau des instructions selon le comportement target.
Oui. Les contrôles documentés comprennent le contexte des appareils de bureau, mobiles ou tablettes; la largeur et la hauteur des fenêtres; et le contexte de demande pris en charge au niveau du pays.
- Je ne sais pas. API de navigateur utilise une interface REST requête-réponse. Votre application déclare les attentes, les actions, le contexte et la sortie pris en charge par le biais des paramètres de requête, puis reçoit la réponse sélectionnée ou une erreur API.
WebScrapingAPI exécute l'exécution du navigateur hébergé et renvoie la sortie demandée. Votre équipe possède target l'admissibilité, les instructions d'interaction, les sélecteurs, le schéma d'extraction, la validation du contenu et la maintenance du changement de source.
Votre première demande de navigateur
Partagez une page, les actions nécessaires et le volume prévu. Nous vous aidons à définir le forfait Browser API.