Pular para o conteúdo principal

Net::HTTP - Scraper básico universal com suporte para extração de dados em múltiplas páginas e contorno de CloudFlare

Visão geral do scraper

Visão geral do scraperNet::HTTPNet::HTTP – é um scraper universal que permite resolver a maioria das tarefas não padronizadas. Pode ser usado como base para a extração de dados de conteúdo arbitrário de quaisquer sites. Permite baixar o código da página através de um link, suporta extração de dados de múltiplas páginas (navegação por páginas), trabalho automático com proxy, e permite verificar o sucesso da resposta pelo código ou pelo conteúdo da página.

Casos de uso do scraper

Dados coletados

Dados coletados
  • Conteúdo
  • Código de resposta do servidor
  • Descrição da resposta do servidor
  • Cabeçalhos de resposta do servidor
  • Proxies utilizados na requisição
  • Array com todas as páginas coletadas (utilizado quando a opção Use Pages está ativa)

Funcionalidades

  • Extração de dados multipáginas (navegação por páginas)
  • Trabalho automático com proxies
  • Verificação de resposta bem-sucedida por código ou por conteúdo da página
  • Suporte a compressão gzip/deflate/brotli
  • Detecção e conversão de codificações de sites para UTF-8
  • Contorno de proteção CloudFlare
  • Escolha do motor (HTTP ou Chrome)
  • Opção Check content – executa a expressão regular especificada na página obtida. Se a expressão não for correspondida, a página será carregada novamente com outro proxy.
  • Opção Use Pages – permite percorrer um número especificado de páginas com um passo determinado. A variável $pagenum contém o número da página atual durante a iteração.
  • Opção Check next page – é necessário especificar uma expressão regular que extrairá o link para a próxima página (geralmente o botão "Próximo"), se existir. A transição entre páginas ocorre dentro do limite especificado (0 - sem limites).
  • Opção Page as new query – a transição para a próxima página ocorre em uma nova requisição. Permite remover a restrição do número de páginas para transição.

Opções de uso

  • Download de conteúdo
  • Download de imagens
  • Verificação do código de resposta do servidor
  • Verificação da presença de HTTPS
  • Verificação da presença de redirecionamentos
  • Listagem de URLs de redirecionamento
  • Obtenção do tamanho da página
  • Coleta de meta tags
  • Extração de dados do código-fonte da página e/ou cabeçalhos

Consultas

Como consultas, é necessário indicar links para as páginas, por exemplo:

http://lenta.ru/
http://a-parser.com/pages/reviews/

Exemplos de formatos de saída

O A-Parser suporta formatação flexível de resultados graças ao motor de modelos integrado Template Toolkit, o que permite exibir resultados em formato livre, bem como estruturado, como CSV ou JSON

Saída de conteúdo

Formato do resultado:

$data

Exemplo de resultado:

<!DOCTYPE html><html id="XenForo" lang="ru-RU" dir="LTR" class="Public NoJs uix_javascriptNeedsInit LoggedOut Sidebar  Responsive pageIsLtr   hasTabLinks  hasSearch   is-sidebarOpen hasRightSidebar is-setWidth navStyle_0 pageStyle_0 hasFlexbox" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<!-- Google Tag Manager -->
<!-- End Google Tag Manager -->
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<base href="https://a-parser.com/" />
<title>A-Parser - scraper para profissionais de SEO</title>
<noscript><style>.JsOnly, .jsOnly { display: none !important; }</style></noscript>
<link rel="stylesheet" href="css.php?css=xenforo,form,public,parser_icons&amp;style=9&amp;dir=LTR&amp;d=1612857138" />
<link rel="stylesheet" href="css.php?css=facebook,google,login_bar,moderator_bar,nat_public_css,node_category,node_forum,node_list,notices,panel_scroller,resource_list_mini,sidebar_share_page,thread_list_simple,twitter,uix_extendedFooter&amp;style=9&amp;dir=LTR&amp;d=1612857138" />
<link rel="stylesheet" href="css.php?css=uix,uix_style&amp;style=9&amp;dir=LTR&amp;d=1612857138" />

Código de resposta do servidor

Formato do resultado:

$code

Exemplo de resultado:

200
nota

O formato do resultado [% response.Redirects.0.Status || code %] permite exibir o status 301, se houver redirecionamentos na requisição.

Obtenção de dados sobre a requisição

A variável $response ajuda a obter informações sobre a requisição e a resposta do servidor

Formato do resultado:

$response.json\n

Exemplo de resultado:

{
"Time": 3.414,
"connection": "keep-alive",
"Decode": "Decode from utf-8(meta charset)",
"cache-control": "max-age=3600,public",
"last-modified": "Tue, 18 May 2021 12:42:56 GMT",
"transfer-encoding": "chunked",
"date": "Thu, 27 May 2021 14:18:42 GMT",
"Status": 200,
"content-encoding": "gzip",
"Body-Length-Decoded": 1507378,
"Reason": "OK",
"Proxy": "http://51.255.55.144:25302",
"content-type": "text/html",
"Redirects": [],
"server": "nginx",
"Request-Raw": "GET / HTTP/1.1\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: en-US,en;q=0.9\r\nConnection: keep-alive\r\nHost: a-parser.com\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n\r\n",
"URI": "https://a-parser.com/",
"HTTPVersion": "1.1",
"Body-Length": 299312,
"Decode-Mode": "auto-html",
"etag": "W/\"60a3b650-170032\"",
"Decode-Time": 0.003,
"IP": "remote",
"expires": "Thu, 27 May 2021 15:18:42 GMT"
}

Obtenção de redirecionamentos

Consulta:

https://google.it

Formato do resultado:

$response.Redirects.0.URI -> $response.URI

Exemplo de resultado:

https://google.it/  -> https://www.google.it/

JSON com redirecionamentos

Formato do resultado:

$response.Redirects.json

Exemplo de resultado:

[{"x-powered-by":"PleskLin","connection":"keep-alive","URI":"http://a-parser.com/","location":"https://a-parser.com/","date":"Thu, 18 Feb 2021 09:16:36 GMT","HTTPVersion":"1.1","Status":301,"content-length":"162","Reason":"Moved Permanently","Proxy":"socks5://51.255.55.144:29683","content-type":"text/html","IP":"remote","server":"nginx","Request-Raw":"GET / HTTP/1.1\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\nAccept-Encoding: gzip, deflate, br\r\nAccept-Language: en-US,en;q=0.9\r\nConnection: keep-alive\r\nHost: a-parser.com\r\nUpgrade-Insecure-Requests: 1\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n\r\n"}]

Exibição do status da resposta do servidor

Formato do resultado:

$reason

Exemplo de resultado:

OK

Tempo de resposta do servidor

Formato do resultado:

$response.Time

Exemplo de resultado:

1.457

Obtenção do tamanho da página

Como exemplo, o tamanho é apresentado em três variantes diferentes.

Formato do resultado:

[% "data-length: " _ data.length _ "\n";
"Body-Length: " _ response.${'Body-Length'} _ "\n";
"Body-Length-Decoded: " _ response.${'Body-Length-Decoded'} _ "\n" %]

Exemplo de resultado:

data-length: 70257
Body-Length: 23167
Body-Length-Decoded: 75868

Processamento de resultados

O A-Parser permite processar resultados diretamente durante a extração de dados; nesta seção, apresentamos os casos mais populares para o scraper Net::HTTP

Extração de cabeçalhos H1-H6

Adicionar regex (opção Parse custom results (Usar regex)) <(h\d+)[^>]+>(.+?)<\/h\d+>, no campo "Parse result" selecionar $pages.$i.data - Page content, no campo ao lado da regex selecionar os modificadores sg. Como tipo de resultado, um array será selecionado automaticamente. No campo "Name" indicar headers, depois em "$1 to" indicar tag, clicar no

+ ao lado e, no novo campo que aparecer "$2 to" indicar content. No formato geral do resultado, definir a saída $p1.headers.format('$tag - $content\n').

Baixar exemplo

Como importar um exemplo para o A-Parser

eJxtVNuO2jAQ/RVkIS2IW3loH6IVFYuK2ooSlmWfIJUsMgR3HTu1HboI8e+dcUIC
tE+Jj+ccn7nYJ+a4fbMLAxacZcH6xDL/zwI2BxcEX1erRWOrpYStEypp7Ie9/SfW
ZRk3Fgwx1nUg4jHseC4d656YO2aAMtvcOp0uwXqYmeInWKNEApYo3HEW0U4C70h4
bO03m7jTXv8cRZ1Rq9/53H7cbAYeHLEyblWI26SSLBFuDD8i6L9znhK2Bx6T2Uso
2cbEibvVyoFyLDpHUbU91SblVIJmNuyX5P7Og62HJhIbvUazZG426qFdK7/wA6w0
UndCQg1PcVWaaWK+QLsXxXbfvVNleBwLJ7TisjifXNaeXpX4nRNfaYzFXyPATo1O
EXLgBQg8XryvWdOvqbK55z4XHBbsuLTQZRatTjkaie93hAPDnTZhRn4QPzGtxlLO
4ACyDvP6T7mQVJ/xDknfSuL/Q8J/NM5VetdHHcD8MeihUvGrp/BHzYr1TCeXYkiR
CodrO9G5orZ9QPANIKtqNqewVBuojimVy9Nx/jNQMUbWLRtnNXSTxk1bbkGciZ1I
QkzAiBgukbla4SUL1USnmQTKS+VSYlssLOvxGNuyDbSoDd6TJ/4ItFXdNOa0lvb7
S2E1MwLH7yMZTLGS16eWklsu5etydr1DRLylWai+GHPXPj8YbO9cZoPBgPeKm9/f
6nRA9weHOdE4ZpjqOarehepBOV29DsHpjK37ZRdFDOVJEYhhwSz2hQXD81+VjpX2

Coleta de meta tags

Adicione uma regex (opção Parse custom results (Utilizar regex)) (<meta[^>]+>), no campo "Parse result" selecione $pages.$i.data - Page content, no campo ao lado da regex selecione o modificador g. O tipo de resultado será automaticamente selecionado como array. No campo "Name" indique meta, em "$1 para" indique item. No Formato do resultado utilize $p1.meta.format('$item\n').

Baixar exemplo

Como importar um exemplo para o A-Parser

eJxtVO9v2jAQ/V8spBatg/XDvkRTJYqEtokRRtNPNJMscsk8/Gu2Q0FR/vfeJSGB
bp/ie37v3Z3PTsUC93u/duAheBZtK2abNYtYBjkvZWB3zHLnwdH2lq0gRNHXJFkj
3jMqFk4WULMrfTBqA74VunYRbdGiAE8SHjhLaaeAIwpuvygIfPvrIf3wMGYdnrRm
Re/QAdw5fkKw+a64IozkPY9KZCKAYmmdpj26ME5xamlk7yckmOQNcnszIvLLi74Z
Dx5P/ACJQXYuJAzwAqMu5wi7ANo9+4wn4Uj98iwTQRjNZZuS6hnKeNbib0l6bZCL
SyfAL5xRCAVoDAg8ncvdslET03mVjfZnq2FRzqWHO+ax1AXHQrL3O9iX48G42FI9
iFfM6JmUSziAHGiN/2MpZIbzneUo+tYJ/0+J//Go+/YuUx3AvTqsoXdposf4x6DK
zNIU58OQQomAsZ+bUtOkPiG4B7D9ma2IpoyDPk3n3GXHK2xBZ8gcRjazA3TVxtVY
rsGd0bkoYmzAiQzOzFIn+E5iPTfKSqC+dCkljsXDZrgeM9+NgYKhwPfieZPi6oUF
Y6T//tSWap3A6/eZClR4kpdZO8sdl/J5s7zcYcOVwuB3CNZH0yn/2L7dyc6o6avY
i6nQGRynjDwCFAZvF3ZYp/0j738F1cVTj6oaJ/bHr1sOtUcMxPCcPI6DRff1GzD1
gDE=

Opções de navegação por paginação

Uso do Use pages

Use pages. Esta função permite percorrer a paginação indicando antecipadamente um número conhecido de páginas. Como exemplo, vamos pegar uma das categorias no site do catálogo de produtos https://www.proball.ru/catalog/myachi/. No topo e no rodapé vemos o painel de paginação. Ao clicar nos ícones com os números das páginas, é possível ver na barra do navegador como o parâmetro com o número da página é passado no final da requisição:

https://www.proball.ru/catalog/myachi/?PAGEN_1=1

Use pages é uma espécie de contador que, na verdade, substitui na variável $pagenum os números em ordem, aumentando-os pelo valor que especificarmos

Uso do Use pages

Como visto na captura de tela, no formato de consulta do scraper, a variável $pagenum é usada no local apropriado. A função Use pages percorrerá e substituirá na consulta todos os valores; na prática, obteremos os links para a requisição

https://www.proball.ru/catalog/myachi/?PAGEN_1=$pagenum

onde, em vez da variável $pagenum, será inserido o número da página, começando de 1 até 4 com passo 1. Dessa forma, obtém-se a navegação pelas páginas do intervalo desejado. Nisto reside a limitação deste método - é necessário saber antecipadamente a quantidade de páginas existentes na paginação. Obviamente, ao extrair dados de várias categorias simultaneamente, a quantidade de páginas será diferente em cada uma e, como solução, podemos simplesmente indicar uma quantidade maior de páginas presumidas. Mas isso não é totalmente correto, por isso existe uma solução mais otimizada, que será discutida a seguir

Baixar exemplo
eJx1VNtu2kAQ/ZVqhJSgUAhV+2I1jSgqvSgCmtAnjKKtPTZu1rubvXAR8r931jY2
pOmTvWfPXM7M7BzAMvNk5hoNWgPB8gCq/IcAnME5SxF6oJg2qP31EqZog+DbYjEn
PMaEOW6hdwC7V0g2coNaZ7E3ymI6p1LGY1meN4w7oizfXV+vitYicsbK/B5N6Qh0
9RMsKWiKxgdhlsHK36S4I4OP7E3EmTE3IaQU6m1mMX98XCOLUYcQhuZqrTGh28v+
1W03hE9Q2y6qgGkTpQaY1mxPYPmdstxjPBNPpiF65SUEp5lLZTMpzFFqXS7TSoWh
9xrHmecxDsGhEvVgUdW3/hxJJ3y930NR/L+Szw71PpE6Z/YkQqeEb+ejr1+mj8Ob
jvcnXA7FatUkP6mMiKyG/VJYv/JzebG2VplgMNhut32l5W/GeV+7jieFobjothV4
YBtcSHKSZBxbeEKnumQdahT626P3bj8ym7MKVJn4arbZ/RLZcylFSOJ6ORmaiZY5
QRZ3tgb3RxXLWrMfCVfa/qxsIEgYN9gDQ6lOGCUSv7yhUdHMSj2rO0cNkWLE+R1u
kLe00v9nl3GaKDNKyOh7bfg6ZfaPj6KRdxqKOrrVlENLiuWdTI/anxBVU42pR3Kp
sXFQR6790otVKPxgtM0YqRY6S/Cs4OdgJEWSpbN62I5MJxa0FmZiLHPF0WcsHOc9
P+P3beNHpi6wP7QJvjQelyEorWZdgJWSmx8PVapKZzRYH5rmE/r6XA4iWgVcpoN8
z6J1NiBbQjCVNA1+c5XjQi9Hl/J6gDvFRIxUEasdFqti1ayyZuEdThZacKAHCH/M
vOJ4VZ5BGJXHUBcgGBZ/AXULzRU=

Uso do Check next page

Check next page - esta é outra função que permite organizar a navegação pela paginação. A particularidade de seu uso é que, para passar para a próxima página, deve-se usar uma expressão regular que retornará o link para a próxima página. Este é um método mais conveniente e frequentemente aplicado. No entanto, não será possível aplicá-lo para https://www.proball.ru/catalog/myachi/, pois não há links para as próximas páginas no código. Os links lá são gerados por script. Portanto, usaremos como exemplo o site http://www.imdb.com/search/name?gender=female. Aqui há paginação tanto no início quanto no final da lista. Ao analisar o código-fonte, pode-se notar a presença de um link que permite navegar para a próxima página:

img

  • no campo Next page RegEx, escreveremos a expressão regular
  • no campo Limit (Limite), indicaremos a quantidade de páginas que devem ser percorridas
Uso do Check next page

No exemplo, está indicado 4. Ao indicar o limite, definimos quantas páginas o scraper deve percorrer. No nosso caso, serão percorridas 5 páginas, pois a contagem começa em 0. Se indicar o limite 0, o scraper funcionará até percorrer todas as páginas, independentemente da quantidade. Isso é muito útil quando se precisa extrair todos os resultados de todas as páginas

Baixar exemplo
eJx1VGFT2kAQ/SuZG2aUggGq4DSijnXG2qpAlY4fCM6cZANXL7n07iJYhv/e3RAS
sO0XuH3ZvX1vd2+XzHLzYgYaDFjDvNGSJdmZeWwyg8lLDxZ2wKfA6izh2oAmpxHr
gfW86+FwgHgAIU+lZfUls28JYKR6Ba1FQEEiQHuqVHCpMvuVyxRdRh+bzfHq/xEp
ZjrAtLEtY9id+i2k5I2223T2H0UcqLlxekOn47ZOHLQ7RyfOonNUdS6SRMIjPN8I
22gfHruHHWf/5np4d1t3pHgB5wsKU1XncqZVBI32J7fpHjaPW26r1XYeeMi1yMPY
FsVJaqyK7sFkWpleH7wR1mUKhurALWdj+jKFBQZ0TcJjZyK5Mac+k8JY1CQsRAdI
HRZuzWdnvm8+7Lu18yodur7foBhCa10+ejob19Yeo6fueMuJn7E8zXDNbVoQygGu
NX9DMPvv8YgwSm0KR+oji9PoGZGYHHbakVihYrPpxvtJ2DSky52ZhhDVrTUwIv5O
MFXnIMZYh34y02fELAgEJeGSecvdDLciEjSAR2y1Go8LwldKR5zwStJyMzFumEH7
exUS4lRIh+/He9VS5QN/haHCoFBIKOErtPKyVLBvQF83t1Vdu7A7DNeZqWIlmx+x
+JUVIVboi0ctwFzhQCFkIbuAwLcN6xGrZDZNSJrFfl/HMC/k0kCdGaR6xZFI8P4L
itXcKt3P24IFU/GFlLfwCrJ0y+7/nAoZ4DO9CDHoax74b5f+X3esCnnbqfBtzjVy
KJ0CdaumG+0vAElRjR4hkdJQXJBnzu/FTZNATENVNgOfawHtENwp+C44UXEopv18
bWw803iI66wfX6oINwAxjlMp67RO7svGX5i8wGSUBN8HX2YpkFax4JhVSppvD2uq
iRY4WO2i+YjOrE28RmM+n7siCp7diYoaBriezBo0m+e40FDCaQgRz6ZxgqM3VTgU
tHizqaHhMZQKFrgJAsCyWJ3CarwaFxu42NbLrT3sLVfYmJ9msPYhaeSBGNbIYCuY
11r9ASIaBUM=

Como mencionado anteriormente, há a possibilidade de limitar dinamicamente a quantidade de páginas no Use pages. Para isso, deve-se usar conjuntamente Use pages e Check next page. Vamos complementar o exemplo que foi analisado na descrição do Use pages e adicionar a ele a função Check next page:

Uso do Check next page (2)

Essas duas funções em conjunto trabalham da seguinte forma: Use pages garante a navegação pelas páginas, e Check next page verifica se a próxima existe. Assim que o Check next page não encontrar a próxima página, a extração dessa categoria será interrompida, sem esperar percorrer toda a quantidade indicada no Use pages. Combinando essas funções, adicionamos eficiência ao trabalho do scraper, economizando tempo e recursos

Baixar exemplo
eJx1VNtuGjEQ/ZXKQkqiEC6V+rJqGtGo9KIIaEKfWBS5u7OLi9d2bC8EIf69M3uF
XJ52fTyXM2fGs2eeu7WbWXDgHQsWe2aKfxaw3MGMp8C6zHDrwNL1gk3AB8GP+XyG
eAwJz6Vn3T3zOwPoozdgrYjJScR4TrWOb3Vx3nCZo8ni42CwPLQeUe68zu7BFYGY
LX+CBSZNwVES7jlb0k0Kz+jwmX+IJHfuOmQpproSHrLHxxXwGGzIwtBdriwkeHve
u7y5CNkXVvnOy4Rpk6UCuLV8h2DxnfCMMCnU2jWGVHkBsWPm2nihlatLreRybals
SFHjWJAdlyzYl0U9eDDVLZ0jnSvSezgYsMPhfS2fcrC7RNuM+6McnQK+mY2+f5s8
Dq87FFHlGXufaLSCaD2BZ191t45EQl8pxK8oxjVpGV+G7FUNJ/53IhNEnqgvl41g
45Im0jPDXiFmr2R+frby3rig399utz1j9V8uZc/mHTIKQ3V20ar+wDcw1xgkERJa
eIynqk0d5Ax0W0e/6EVuc8K4ZEIdbNn9UeKpKFlptCUBBbix1RlCHgurwF1dxaJS
mcYwL3x/lz4sSLh00GUOqY45Eolf3uB4Wu61nVZNQAG1Gkl5BxuQrVkR/2suJE6x
GyXo9LNyfNtk+irGoSnvOBXO0NYih9Yo1nc6rWtfA5hGjQkhmbbQBKgyV3FxSxhQ
NEJtM0amhU4Ingh+CkZaJSKdVuNdW+Zqjqtoqm51ZiQQY5VL2aV3dd82fuQqgenQ
EnzpfFukoKGuVxTzWkv366GkaqzAwfrUNB/Rt+eyH+GrkDrtZzserUQffRGBVOM0
0LYsxgWfmC3K6zJ4NlzFgIoMD8vDstmdzYbdH23QYI/vnf1zs9KGSiILxFAbhy2g
KP8Byg3yDQ==

Uso de macros de substituição

Macros de substituição permitem realizar a substituição sequencial de valores de um intervalo especificado

Uso de macros de substituição

Este preset funcionará da seguinte maneira. Ao indicar no formato da consulta o modelo:

$query?PAGEN_1={num:1:10}

adicionamos a substituição de valores de 1 before 10 (qualquer intervalo pode ser especificado) na própria consulta. Dessa forma, obtemos consultas que garantem a navegação pela quantidade desejada de páginas, do tipo:

https://www.proball.ru/catalog/myachi/?PAGEN_1=1
https://www.proball.ru/catalog/myachi/?PAGEN_1=2
...
https://www.proball.ru/catalog/myachi/?PAGEN_1=10

O uso de macros de substituição para navegar pela paginação é semelhante à função Use pages e possui as mesmas limitações, ou seja, é necessário especificar um intervalo concreto de valores. A vantagem deste método é que, através das macros de substituição, é possível inserir diferentes valores, tanto numéricos quanto textuais, por exemplo, palavras ou expressões. Assim, podemos inserir partes necessárias nas consultas de forma mais flexível ou formar as próprias consultas a partir de partes que estarão localizadas em arquivos diferentes, se a tarefa assim o exigir

Baixar exemplo
eJxtVFtP2zAU/iuTVQkQXUsn7SUaQx2iu4i1HXRPTYW85CT1cGzPx+lFUf47x26a
AOMp8Xcu3+dzccUcx0ecW0BwyKJlxUz4ZxH7yROr8WbH+sxwi2C9fcmm4KLo22Ix
JzyFjJfSsX7F3N4ABekNWCtSIKNI6ZxrnV7rcN5wWZLL8sPFxaruIpISnS7uAEMi
Zg8/0ZJIc0BPwh1nK2/JYUcBn/i7RHLEy5jlRPVeOCgeHtbAU7Axi2M8X1vIyHo6
OL86i9ln1sQuDoR5y9IA3Fq+JzB8p7zwmBTqEVtHf/MAsVW9WrXoRNuC+1L1zGgQ
IgZZgE5P1s4ZjIbD7XY7MFb/4VIObNnzTnGsTs661Pd8AwtNSTIhoYMndGq09KgC
4K3H7GeDBDdecJoKJ7Ti8qDEy+zU/Vbiny84U5p86dcKwInVBUEOdq4B98dbLFkv
nK/m468304fRZaXKIhpFo4val78M6X4d0rAo4xKhz5DUTzhpS19bqC2WO21nxksk
vGJajaW8hQ3Izi1QfimFpO7hOKOg703g2y6z/3LU7Y2fU9Ecbi1p6JxSfavzYzke
AUxboKlHCm2hTdAwN3lpPQwoP85df8amg14IfNGDl2CiVSbyWbMiR89SLWgHZ+pa
F0aCV6xKKangCHfdLIyxKbA/dAJfB18HCpLVriZzWkv8cX+QaqygWfvYzgOhb4/q
MKG1kzofFnuerMWQYgmBXNt9eCbCBPlBQs8BO8NVClQPZ0uoaUvaR6N9W6pnT0dU
1dSRvzg/+Pg7eQ/CqDhIPWDRqH4C36ybyg==

Uso do Page as query

Para reduzir o consumo de memória, a lógica pode ser definida com a ajuda da opção Page as query. Ao ativá-la, as funções Check next page e Use pages colocarão cada página seguinte nas consultas como uma consulta independente, não acumulando assim o seu conteúdo na memória. Page as query permite também definir se deve aumentar o nível da consulta Increase (semelhante ao funcionamento da ferramenta tools.query.add), ou não Keep

Uso do Page as query
Baixar exemplo
eJx1VNty2jAQ/RWPJg/QEts0gUydpBnCDE0bAiQhkwfgQbHXoCJbriQDKcO/dyXM
tc0LeFd7OXv2siSaqqnqSVCgFQkGS5LZbxKQHh1DQ3Vg/piDfCcVklGpQBqrAemA
DoK7fr+H+ghimnNNKkui3zNAVzEDKVkE+MgilMdCRE1h5RnlOZoMvvj+aPWxR46Z
ThFAqnc+5EH8YZxTr+b6TumVpZGYK6fTd+pu9dJBuX5+6Szq52WnkWUcXuHtnmmv
dnbhntWd0v1d/6FdcTibgvMdwqkoO82JFAl4ta+u7575F1W3Wq05zzSmkhVuZB9i
pplI1QZhOMEgHVhow9MeyCvqTCTE10NScj/flIdkOFSfQ06VQhVnSmNhGbqcpujr
mB8rDgnGoFHETBLKSbA8zNBmCTNd8cnqY0zZccsKUFrmcBx9CpBZszbMADX+ajUa
VQh2H3upWkIm1OQ7yaquZpqbEou3ZzqDvsC3mO2rWyh1aGJgnURUg3l1YxunVHb1
Qh8UuE5ghmmX9CVlvy2HqUBb/JQMVAt7hCoNNoBRvm/ADciJlQmGyK3v49qHBDHl
CktWCLVFEUh0/MKwD1QL2S0YREZE2uDcsrEzs/Fvc8YjnPxGjE4/Csf/m3T/ibHa
lrefCsd9LhHDNoqVbrsPO69ItMUYK4/esG5u2o+yaoo8Xc9BxbZwy1nHcJYICds0
ReQiO+54BqmZkl3LcE+2qoMyDtqyp1wSJXIZmgX2ESHV1HBfDKOEMSxscPOPm2Dn
5lvJ/XRTvhoOvbW4MeivnczsamF6uZ6y0QoDhiKN2bhb3IQNmjzt47Hqpk2R4Hob
7tKc84q5FU+7EWyootVG2JFw7Ny0KQy9m+uFMARXP5/XdGSSIaqaAZtgt/azFiFD
yvnLU3v/hezGFoWJ1lngefP53GVJ9OaGIvEUUBlOvBT35AavG9J6HUNC7R6FuDRj
geOM5RoWinu7Pc7LvasbLPEMkF+qt7YxtRoL1CFpCvtPgurqL0u6AK8=

Configurações possíveis

Nome do parâmetroValor padrãoDescrição
Good statusAllEscolha de qual resposta do servidor será considerada bem-sucedida. Se durante a extração houver outra resposta do servidor, a requisição será repetida com outro proxy
Good code RegExPossibilidade de especificar uma expressão regular para verificar o código de resposta
Ban Proxy Code RegExPossibilidade de banir o proxy temporariamente (Proxy ban time) com base no código de resposta do servidor
MethodGETMétodo da requisição
POST bodyConteúdo para enviar ao servidor ao usar o método POST. Suporta as variáveis $query – URL da requisição, $query.orig – consulta original e $pagenum - número da página ao usar a opção Use Pages.
CookiesPossibilidade de especificar cookies para a requisição.
User agent_O user-agent da versão atual do Chrome é inserido automaticamente_Cabeçalho User-Agent ao solicitar páginas
Additional headersPossibilidade de especificar cabeçalhos de requisição arbitrários com suporte às funcionalidades do motor de modelos e uso de variáveis do construtor de consultas
Read only headersLer apenas cabeçalhos. Em alguns casos, permite economizar tráfego se não houver necessidade de processar o conteúdo
Detect charset on contentReconhecer a codificação com base no conteúdo da página
Emulate browser headersEmular cabeçalhos de navegador
Max redirects count7Quantidade máxima de redirecionamentos que o scraper seguirá
Follow common redirectsPermite fazer redirecionamentos http <-> https e www.domain <-> domain dentro do mesmo domínio, ignorando o limite Max redirects count
Max cookies count16Número máximo de cookies para salvar
EngineHTTP (Fast, JavaScript Disabled)Permite escolher o motor HTTP (mais rápido, sem JavaScript) ou Chrome (mais lento, JavaScript ativado)
Chrome HeadlessSe a opção estiver ativada, o navegador não será exibido
Chrome DevToolsPermite usar ferramentas de depuração do Chromium
Chrome Log Proxy connectionsSe a opção estiver ativada, informações sobre as conexões do chrome serão exibidas no log
Chrome Wait Untilnetworkidle2Define quando a página é considerada carregada. Mais detalhes sobre os valores.
Use HTTP/2 transportDefine se deve usar HTTP/2 em vez de HTTP/1.1. Alguns sites banem imediatamente se usar HTTP/1.1, enquanto outros, ao contrário, não funcionam via HTTP/2.
Try use HTTP/1.1 for Protocol errorIndica ao scraper para repetir a requisição com HTTP/1.1 se o HTTP/2 estava ativado e ocorreu um erro de protocolo (ou seja, se o site não funciona via HTTP/2)
Don't verify TLS certsDesativação da validação de certificados TLS
Randomize TLS FingerprintEsta opção permite contornar o banimento de sites por impressão digital TLS
Bypass CloudFlare with ChromeContorno automático da verificação CloudFlare
Bypass CloudFlare with Chrome Max Pages20Quantidade máx. de páginas ao contornar CF via Chrome
Bypass CloudFlare with Chrome HeadlessSe a opção estiver ativada, o navegador não será exibido durante o contorno do CF via Chrome