Realtime
Oxylabs 的 Web Scraper API 的 Realtime 集成。保持 HTTPS 连接从任务提交直到返回结果或错误,使用 JSON 格式的负载。
Realtime 是一种同步集成方法。它 需要保持连接打开 直到任务成功完成或返回错误为止。
任务提交
端点
用于任务提交的 Realtime API 端点为:
POST https://realtime.oxylabs.io/v1/queries输入
以 JSON 有效负载的形式提供任务参数,如下面的示例所示。Python 和 PHP 示例包含注释以便说明。
curl --user "USERNAME:PASSWORD" \
'https://realtime.oxylabs.io/v1/queries' \
-H "Content-Type: application/json" \
-d '{"source": "universal", "url": "https://example.com", "geo_location": "United States"}'import requests
from pprint import pprint
# 构建负载(payload)。
payload = {
"source": "universal", # 你选择的来源,例如 "universal"
"url": "https://example.com", # 请查看你使用的具体来源的文档,以确定应使用 "url" 还是 "query"
"geo_location": "United States", # 某些来源接受邮政编码和/或坐标
#"render" : "html", # 如果你想在页面上渲染 JavaScript,请取消注释
#"render" : "png", # 如果您想对抓取的网页截图,请取消注释
#"parse" : true, # 检查哪些来源支持解析数据
}
# 获取响应。
response = requests.request(
'POST',
'https://realtime.oxylabs.io/v1/queries',
auth=('YOUR_USERNAME', 'YOUR_PASSWORD'), # 在此处填写您的凭据
json=payload,
)
# 与返回作业状态和结果 URL 的响应不同,此调用将直接返回
# 带有结果的 JSON 响应。
pprint(response.json())<?php
$params = array(
'source' => 'universal', // 你选择的来源,例如 "universal"
'url' => 'https://example.com', // 请查看你使用的具体来源的文档,以确定应使用 "url" 还是 "query"
'geo_location' => 'United States', // 某些来源接受邮政编码或坐标
//'render' : 'html', // 如果你想在页面内渲染 JavaScript,请取消注释
//'render' : 'png', // 如果您想对抓取的网页截图,请取消注释
//'parse' : TRUE, // 检查哪些来源支持解析数据
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "YOUR_USERNAME" . ":" . "YOUR_PASSWORD"); // 在此处填写您的凭据
$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
echo $result;
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close ($ch);PHPusing System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;
namespace OxyApi
{
class Program
{
static async Task Main()
{
const string Username = "YOUR_USERNAME";
const string Password = "YOUR_PASSWORD";
var parameters = new Dictionary<string, string>()
{
{ "source", "universal" },
{ "url", "https://example.com" },
{ "geo_location", "United States" },
};
var client = new HttpClient();
Uri baseUri = new Uri("https://realtime.oxylabs.io");
client.BaseAddress = baseUri;
var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/v1/queries");
requestMessage.Content = JsonContent.Create(parameters);
var authenticationString = $"{Username}:{Password}";
var base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.ASCIIEncoding.UTF8.GetBytes(authenticationString));
requestMessage.Headers.Add("Authorization", "Basic " + base64EncodedAuthenticationString);
var response = await client.SendAsync(requestMessage);
var contents = await response.Content.ReadAsStringAsync();
Console.WriteLine(contents);
}
}
}package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
const Username = "YOUR_USERNAME"
const Password = "YOUR_PASSWORD"
payload := map[string]string{
"source": "universal",
"url": "https://example.com",
"geo_location": "美国",
}
jsonValue, _ := json.Marshal(payload)
client := &http.Client{}
request, _ := http.NewRequest("POST",
"https://realtime.oxylabs.io/v1/queries",
bytes.NewBuffer(jsonValue),
)
request.SetBasicAuth(Username, Password)
response, _ := client.Do(request)
responseText, _ := ioutil.ReadAll(response.Body)
fmt.Println(string(responseText))
}
package org.example;
import okhttp3.*;
import org.json.JSONObject;
public class Main implements Runnable {
private static final String AUTHORIZATION_HEADER = "Authorization";
public static final String USERNAME = "YOUR_USERNAME";
public static final String PASSWORD = "YOUR_PASSWORD";
public void run() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("source", "universal");
jsonObject.put("url", "https://example.com");
jsonObject.put("geo_location", "United States");
Authenticator authenticator = (route, response) -> {
String credential = Credentials.basic(USERNAME, PASSWORD);
return response
.request()
.newBuilder()
.header(AUTHORIZATION_HEADER, credential)
.build();
};
var client = new OkHttpClient.Builder()
.authenticator(authenticator)
.build();
var mediaType = MediaType.parse("application/json; charset=utf-8");
var body = RequestBody.create(jsonObject.toString(), mediaType);
var request = new Request.Builder()
.url("https://realtime.oxylabs.io/v1/queries")
.post(body)
.build();
try (var response = client.newCall(request).execute()) {
assert response.body() != null;
System.out.println(response.body().string());
} catch (Exception exception) {
System.out.println("Error: " + exception.getMessage());
}
System.exit(0);
}
public static void main(String[] args) {
new Thread(new Main()).start();
}
}
import fetch from 'node-fetch';
const username = 'YOUR_USERNAME';
const password = 'YOUR_PASSWORD';
const body = {
source: 'universal',
url: 'https://example.com',
geo_location: 'United States'
};
const response = await fetch('https://realtime.oxylabs.io/v1/queries', {
method: 'post',
body: JSON.stringify(body),
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + Buffer.from(`${username}:${password}`).toString('base64'),
}
});
console.log(await response.json());输出
Realtime API 在输出中支持以下结果类型:
HTML: 从目标网页抓取的原始 HTML 内容;
JSON: 从 HTML 内容解析出的结构化数据,以 JSON 格式呈现;
PNG: 以 PNG 格式渲染页面的 Base64 编码截图。
XHR: 在加载页面时发起的 XHR 请求 。
Markdown: Markdown 网页的。
下表说明了基于 API 请求负载中包含的参数,默认和其他可用的结果类型。
渲染参数
解析参数
默认输出
可用输出
x
x
html
html
html
x
html
html
png
x
png
html, png
x
true
json
html, json
html
true
json
html, json
png
true
png
html, json, png
输出示例:
{
"results": [
{
"content": "<html>
内容
</html>",
"created_at": "2024-06-26 13:13:06",
"updated_at": "2024-06-26 13:13:07",
"id": null,
"page": 1,
"url": "https://www.example.com/",
"job_id": "12345678900987654321",
"status_code": 200
}
]
}最后更新于
这有帮助吗?

