Regras de extração
Esqueça o BeautifulSoup, o Cheerio e as regex. Diga ao Shifter quais seletores CSS mapeiam para quais campos JSON e receba de volta um JSON limpo.
Sintaxe básica
Seção intitulada “Sintaxe básica”Passe extract_rules como um objeto JSON codificado em URL, em que cada chave é um campo de saída e cada valor descreve como extraí-lo.
Exemplo mínimo:
{ "title": { "selector": "h1", "output": "text" }}Codificado em URL e enviado:
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://example.com&extract_rules=%7B%22title%22%3A%7B%22selector%22%3A%22h1%22%2C%22output%22%3A%22text%22%7D%7D"
# {"title": "Example Domain"}Tipos de saída
Seção intitulada “Tipos de saída”output | Retorna | Exemplo |
|---|---|---|
text | Conteúdo de texto do elemento | "Example Domain" |
html | HTML interno | "<strong>Example</strong> Domain" |
@<attr> | Valor do atributo | "@href" → "https://example.com/" |
Múltiplos campos
Seção intitulada “Múltiplos campos”Adicione chaves ao objeto de regras:
{ "title": { "selector": "h1", "output": "text" }, "description": { "selector": "meta[name=description]", "output": "@content" }, "canonical": { "selector": "link[rel=canonical]", "output": "@href" }}Resposta:
{ "title": "Example Domain", "description": "The example domain...", "canonical": "https://example.com/"}Para listas (resultados de busca, cards de produtos, linhas de tabela), envolva a regra em um elemento pai que especifique type: "list" e item:
{ "products": { "selector": "div.product", "type": "list", "item": { "name": { "selector": "h2", "output": "text" }, "price": { "selector": ".price", "output": "text" }, "link": { "selector": "a.title", "output": "@href" } } }}Resposta:
{ "products": [ { "name": "Item A", "price": "$19.99", "link": "/item-a" }, { "name": "Item B", "price": "$24.50", "link": "/item-b" } ]}Auto-parser de JSON
Seção intitulada “Auto-parser de JSON”Para endpoints que já retornam JSON (a maioria das APIs REST), adicione auto_parser=1 para analisar o corpo e retorná-lo como está:
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://api.example.com/products&auto_parser=1"- Teste os seletores primeiro no console de desenvolvedor do navegador:
document.querySelector(...). - Codifique corretamente o JSON em URL. A maioria dos clientes HTTP faz isso automaticamente quando você passa as regras como um objeto de parâmetros.
- Se um campo estiver ausente na página, ele retorna
nullem vez de falhar a requisição.
Próximos passos
Seção intitulada “Próximos passos”- Sessões e proxies, faça scraping em fluxos paginados.
- Avançado, cabeçalhos, cookies, corpos POST.