Ga naar de hoofdinhoud

Net::HTTP - Universele basis-scraper met ondersteuning voor multipage-gegevensextractie en CloudFlare-bypass

Overzicht van de scraper

Overzicht van de scraperNet::HTTPNet::HTTP – is een universele scraper die de meeste niet-standaard taken kan oplossen. Het kan worden gebruikt als basis voor de gegevensextractie van willekeurige content van elke website. Maakt het mogelijk om de paginacode via een link te downloaden, ondersteunt paginering (navigeren door pagina's), automatische werking met proxy's en biedt de mogelijkheid om een succesvolle respons te controleren op basis van de statuscode of de inhoud van de pagina.

Toepassingen van de scraper

Verzamelde gegevens

Verzamelde gegevens
  • Content
  • Server responscode
  • Server responsbeschrijving
  • Server responsheaders
  • Proxy's gebruikt bij het verzoek
  • Array met alle verzamelde pagina's (gebruikt bij de optie Use Pages)

Mogelijkheden

  • Pagina-overschrijdende gegevensextractie (navigatie door pagina's)
  • Automatisch werken met proxy's
  • Controle op succesvolle respons via code of pagina-inhoud
  • Ondersteunt compressie gzip/deflate/brotli
  • Detectie en conversie van website-coderingen naar UTF-8
  • Omzeilen van CloudFlare-beveiliging
  • Keuze van engine (HTTP of Chrome)
  • Optie Check content – voert de opgegeven reguliere expressie uit op de ontvangen pagina. Als de expressie niet matcht, wordt de pagina opnieuw geladen met een andere proxy.
  • Optie Use Pages – maakt het mogelijk om een opgegeven aantal pagina's te doorlopen met een bepaalde stap. De variabele $pagenum bevat het huidige paginanummer tijdens het doorlopen.
  • Optie Check next page – hier moet een reguliere expressie worden opgegeven die de link naar de volgende pagina extraheert (meestal de "Volgende"-knop), indien deze bestaat. De overgang tussen pagina's vindt plaats binnen de opgegeven limiet (0 - onbeperkt).
  • Optie Page as new query – de overgang naar de volgende pagina vindt plaats in een nieuw verzoek. Hiermee kan de limiet op het aantal te doorlopen pagina's worden opgeheven.

Gebruiksscenario's

  • Content downloaden
  • Afbeeldingen downloaden
  • Server responscode controleren
  • Controle op aanwezigheid van HTTPS
  • Controle op aanwezigheid van redirects
  • Lijst met redirect-URL's weergeven
  • Paginagrootte ophalen
  • Meta-tags verzamelen
  • Gegevens extraheren uit de broncode van de pagina en/of headers

Query's

Als query's moeten links naar pagina's worden opgegeven, bijvoorbeeld:

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

Voorbeelden van resultaatweergave

A-Parser ondersteunt flexibele formattering van resultaten dankzij de ingebouwde Template Toolkit, waardoor resultaten in een willekeurige vorm kunnen worden weergegeven, evenals in gestructureerde formaten zoals CSV of JSON.

Contentweergave

Resultaatformaat:

$data

Voorbeeldresultaat:

<!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 voor SEO-professionals</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" />

Server responscode

Resultaatformaat:

$code

Voorbeeldresultaat:

200
opmerking

Het resultaatformaat [% response.Redirects.0.Status || code %] maakt het mogelijk om de status 301 weer te geven als er redirects in de query aanwezig zijn.

Gegevens over de query ophalen

De variabele $response helpt bij het verkrijgen van informatie over de query en de serverrespons.

Resultaatformaat:

$response.json\n

Voorbeeldresultaat:

{
"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"
}

Redirects ophalen

Query:

https://google.it

Resultaatformaat:

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

Voorbeeldresultaat:

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

JSON met redirects

Resultaatformaat:

$response.Redirects.json

Voorbeeldresultaat:

[{"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"}]

Server responsstatus weergeven

Resultaatformaat:

$reason

Voorbeeldresultaat:

OK

Server responstijd

Resultaatformaat:

$response.Time

Voorbeeldresultaat:

1.457

Paginagrootte ophalen

Als voorbeeld wordt de grootte in drie verschillende varianten gepresenteerd.

Resultaatformaat:

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

Voorbeeldresultaat:

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

Resultaatverwerking

A-Parser maakt het mogelijk om resultaten direct tijdens de gegevensextractie te verwerken. In deze sectie hebben we de meest populaire scenario's voor de Net::HTTP scraper opgenomen.

H1-H6 tags extraheren

Voeg een regex toe (optie Parse custom results (Regex gebruiken)) <(h\d+)[^>]+>(.+?)<\/h\d+>, kies in het veld "Parse result" $pages.$i.data - Paginainhoud, kies in het veld naast de regex de modificatoren sg. Als resultaattype wordt automatisch een array gekozen. Vul in het veld "Name" headers in, geef vervolgens in "$1 to" tag op, klik op

het plusje ernaast en vul in het nieuw verschenen veld "$2 to" content in. Geef in het algemene resultaatformaat de uitvoer $p1.headers.format('$tag - $content\n') op.

Voorbeeld downloaden

Hoe een preset te importeren in 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

Meta-tags verzamelen

Voeg een regex toe (optie Parse custom results (Gebruik regex)) (<meta[^>]+>), kies in het veld "Parse result" $pages.$i.data - Page content, en kies in het veld naast de regex de modifier g. Als resultaat-type wordt automatisch een array gekozen. Geef in het veld "Name" meta op, en in "$1 to" geef item op. Gebruik in het Resultaatformaat $p1.meta.format('$item\n').

Voorbeeld downloaden

Hoe een preset te importeren in 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=

Opties voor het doorlopen van paginering

Gebruik van Use pages

Use pages. Deze functie maakt het mogelijk om door paginering te navigeren door vooraf een bekend aantal pagina's op te geven. Laten we als voorbeeld een categorie nemen op de cataloguswebsite https://www.proball.ru/catalog/myachi/. Boven- en onderaan zien we een pagineringspaneel. Bij het klikken op de iconen met paginanummers is in de browserbalk te zien hoe de parameter met het paginanummer aan het einde van de query wordt doorgegeven:

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

Use pages is een soort teller die feitelijk in de variabele $pagenum opeenvolgende nummers invult, verhoogd met de waarde die we opgeven.

Gebruik van Use pages

Zoals te zien is in de screenshot, wordt in het queryformaat van de scraper op de juiste plaats de variabele $pagenum gebruikt. De functie Use pages zal alle waarden doorlopen en in de query invullen, waardoor we feitelijk links voor de query verkrijgen:

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

waarbij in plaats van de variabele $pagenum het paginanummer wordt ingevuld, beginnend bij 1 tot 4 met een stap van 1. Op deze manier wordt het gewenste bereik aan pagina's doorlopen. Dit is ook de beperking van deze methode: men moet vooraf weten hoeveel pagina's er in de paginering zijn. Het is duidelijk dat bij het gelijktijdig scrapen van meerdere categorieën het aantal pagina's overal anders zal zijn. Als oplossing kunnen we simpelweg een groter aantal verwachte pagina's opgeven. Dit is echter niet helemaal correct, daarom is er een optimalere oplossing die hierna wordt besproken.

Voorbeeld downloaden
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=

Gebruik van Check next page

Check next page is een andere functie die het mogelijk maakt om door paginering te navigeren. Het kenmerk van het gebruik ervan is dat voor de overgang naar de volgende pagina een reguliere expressie moet worden gebruikt die de link naar de volgende pagina retourneert. Dit is een handigere en meest gebruikte methode. Het is echter niet mogelijk om dit toe te passen voor https://www.proball.ru/catalog/myachi/, omdat er in de code geen links naar volgende pagina's staan. De links worden daar door een script gegenereerd. Laten we daarom als voorbeeld de site http://www.imdb.com/search/name?gender=female nemen. Hier is paginering zowel aan het begin als aan het einde van de lijst aanwezig. Na analyse van de broncode is de aanwezigheid van een link te zien die navigatie naar de volgende pagina mogelijk maakt:

img

  • vul in het veld Next page RegEx de reguliere expressie in
  • vul in het veld Limit (Limiet) het aantal pagina's in dat doorlopen moet worden
Gebruik van Check next page

In het voorbeeld is 4 opgegeven. Door een limiet op te geven, bepalen we hoeveel pagina's de scraper moet doorlopen. In ons geval worden er 5 pagina's doorlopen, omdat de telling bij 0 begint. Als de limiet op 0 wordt gezet, werkt de scraper totdat alle pagina's zijn doorlopen, ongeacht het aantal. Dit is erg handig wanneer alle resultaten van alle pagina's gescraped moeten worden.

Voorbeeld downloaden
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=

Zoals hierboven vermeld, is het mogelijk om het aantal pagina's in Use pages dynamisch te beperken. Hiervoor moeten Use pages en Check next page samen worden gebruikt. Laten we het voorbeeld dat bij de beschrijving van Use pages werd behandeld aanvullen en de functie Check next page toevoegen:

Gebruik van Check next page (2)

Deze twee functies werken als volgt samen: Use pages zorgt voor het doorlopen van de pagina's, en Check next page controleert of de volgende bestaat. Zodra Check next page geen volgende pagina meer vindt, wordt de gegevensextractie van deze categorie gestopt, zonder te wachten tot het volledige aantal dat in Use pages is opgegeven is doorlopen. Door deze functies te combineren, verhogen we de efficiëntie van de scraper en besparen we tijd en middelen.

Voorbeeld downloaden
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==

Gebruik van substitutie-macro's

Substitutie-macro's maken het mogelijk om opeenvolgende waarden uit een opgegeven bereik in te vullen.

Gebruik van substitutie-macro's

Deze preset werkt als volgt. Door in het queryformaat een sjabloon op te geven:

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

voegen we de substitutie van waarden van 1 before 10 (elk bereik kan worden opgegeven) toe aan de query zelf. Op deze manier verkrijgen we query's die het doorlopen van het gewenste aantal pagina's garanderen, zoals:

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

Het gebruik van substitutie-macro's voor het doorlopen van paginering lijkt op de functie Use pages en heeft dezelfde beperkingen, namelijk dat er een specifiek bereik aan waarden moet worden opgegeven. Het voordeel van deze methode is dat via substitutie-macro's verschillende waarden kunnen worden ingevuld, zowel numeriek als tekstueel, bijvoorbeeld woorden of uitdrukkingen. Hierdoor kunnen we flexibeler de benodigde delen in query's invoegen of de query's zelf samenstellen uit delen die in verschillende bestanden staan, indien de taak dit vereist.

Voorbeeld downloaden
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==

Gebruik van Page as query

Om het geheugengebruik te verminderen, kan de logica worden gedefinieerd met de optie Page as query. Bij activering zullen de functies Check next page en Use pages elke volgende pagina als een afzonderlijke, zelfstandige query in de querylijst plaatsen, waardoor de inhoud ervan niet in het geheugen wordt opgestapeld. Page as query maakt het ook mogelijk om te bepalen of het query-niveau verhoogd moet worden Increase (vergelijkbaar met de werking van de tool tools.query.add), of niet Keep.

Gebruik van Page as query
Voorbeeld downloaden
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=

Mogelijke instellingen

Naam parameterStandaardwaardeBeschrijving
Good statusAllKeuze welk antwoord van de server als succesvol wordt beschouwd. Als er tijdens de gegevensextractie een ander antwoord van de server komt, wordt de query herhaald met een andere proxy.
Good code RegExMogelijkheid om een reguliere expressie op te geven voor het controleren van de responscode.
Ban Proxy Code RegExMogelijkheid om proxy's tijdelijk te bannen (Proxy ban time) op basis van de server responscode.
MethodGETQuery-methode.
POST bodyContent die naar de server moet worden verzonden bij gebruik van de POST-methode. Ondersteunt variabelen $query – query-URL, $query.orig – oorspronkelijke query en $pagenum - paginanummer bij gebruik van de optie Use Pages.
CookiesMogelijkheid om cookies voor de query op te geven.
User agent_Automatisch wordt de user-agent van de actuele Chrome-versie ingevuld_De User-Agent header bij het opvragen van pagina's.
Additional headersMogelijkheid om willekeurige query-headers op te geven met ondersteuning voor de mogelijkheden van de template engine en het gebruik van variabelen uit de query builder.
Read only headersAlleen headers lezen. In sommige gevallen bespaart dit verkeer als het niet nodig is om de content te verwerken.
Detect charset on contentCodering herkennen op basis van de pagina-inhoud.
Emulate browser headersBrowser-headers emuleren.
Max redirects count7Maximaal aantal redirects dat de scraper zal volgen.
Follow common redirectsMaakt het mogelijk om redirects http <-> https en www.domain <-> domain binnen hetzelfde domein uit te voeren, buiten de limiet van Max redirects count.
Max cookies count16Maximaal aantal cookies om op te slaan.
EngineHTTP (Fast, JavaScript Disabled)Maakt het mogelijk om de engine te kiezen: HTTP (sneller, zonder JavaScript) of Chrome (langzamer, JavaScript ingeschakeld).
Chrome HeadlessAls deze optie is ingeschakeld, wordt de browser niet weergegeven.
Chrome DevToolsMaakt het mogelijk om Chromium-ontwikkeltools te gebruiken.
Chrome Log Proxy connectionsAls deze optie is ingeschakeld, wordt informatie over Chrome-verbindingen in het logboek weergegeven.
Chrome Wait Untilnetworkidle2Bepaalt wanneer een pagina als geladen wordt beschouwd. Meer over de waarden.
Use HTTP/2 transportBepaalt of HTTP/2 moet worden gebruikt in plaats van HTTP/1.1. Sommige sites bannen direct bij gebruik van HTTP/1.1, terwijl andere juist niet werken via HTTP/2.
Try use HTTP/1.1 for Protocol errorInstrueert de scraper om de query te herhalen met HTTP/1.1 als HTTP/2 was ingeschakeld en er een protocolfout optrad (d.w.z. als de site niet werkt via HTTP/2).
Don't verify TLS certsUitschakelen van TLS-certificaatvalidatie.
Randomize TLS FingerprintDeze optie maakt het mogelijk om website-bans op basis van TLS-fingerprinting te omzeilen.
Bypass CloudFlare with ChromeAutomatisch omzeilen van CloudFlare-controle.
Bypass CloudFlare with Chrome Max Pages20Max. aantal pagina's bij het omzeilen van CF via Chrome.
Bypass CloudFlare with Chrome HeadlessAls deze optie is ingeschakeld, wordt de browser niet weergegeven tijdens het omzeilen van CF via Chrome.