Ana içeriğe atla

Net::HTTP - Çok sayfalı veri çekme desteği ve CloudFlare atlatma özellikli evrensel temel veri kazıyıcı

Veri Kazıyıcı Genel Bakış

Veri kazıyıcı genel bakışNet::HTTPNet::HTTP – çoğu standart dışı görevi çözmenize olanak tanıyan evrensel bir veri kazıyıcıdır. Herhangi bir siteden rastgele içerik çekmek için temel olarak kullanılabilir. Bağlantı üzerinden sayfa kodunu indirmeye izin verir, çok sayfalı veri çekmeyi (sayfalar arası geçiş), otomatik proxy çalışmasını destekler ve sayfa içeriğine veya koda göre başarılı yanıt kontrolü yapılmasına olanak tanır.

Veri Kazıyıcı Uygulama Örnekleri

Toplanan Veriler

Toplanan veriler
  • İçerik
  • Sunucu yanıt kodu
  • Sunucu yanıt açıklaması
  • Sunucu yanıt başlıkları
  • İstek sırasında kullanılan proxyler
  • Toplanan tüm sayfaları içeren dizi (Use Pages seçeneği kullanıldığında geçerlidir)

Özellikler

  • Çok sayfalı veri çekme (sayfalar arası geçiş)
  • Otomatik proxy yönetimi
  • Koda veya sayfa içeriğine göre başarılı yanıt kontrolü
  • gzip/deflate/brotli sıkıştırma desteği
  • Site kodlamalarını algılama ve UTF-8'e dönüştürme
  • CloudFlare korumasını atlatma
  • Motor seçimi (HTTP veya Chrome)
  • Check content seçeneği – alınan sayfada belirtilen düzenli ifadeyi çalıştırır. İfade eşleşmezse, sayfa başka bir proxy ile yeniden yüklenir.
  • Use Pages seçeneği – belirli bir adım aralığıyla belirtilen sayıda sayfayı taramanıza olanak tanır. $pagenum değişkeni, tarama sırasında mevcut sayfa numarasını içerir.
  • Check next page seçeneği – varsa sonraki sayfanın bağlantısını (genellikle "İleri" butonu) çıkaracak düzenli ifadenin belirtilmesi gerekir. Sayfalar arası geçiş, belirtilen limit dahilinde gerçekleşir (0 - sınırsız).
  • Page as new query seçeneği – sonraki sayfaya geçiş yeni bir istek olarak gerçekleşir. Geçiş yapılacak sayfa sayısı sınırını kaldırmayı sağlar.

Kullanım Durumları

  • İçerik indirme
  • Resim indirme
  • Sunucu yanıt kodu kontrolü
  • HTTPS varlığı kontrolü
  • Yönlendirme (redirect) varlığı kontrolü
  • Yönlendirme URL listesini alma
  • Sayfa boyutu alma
  • Meta etiketlerini toplama
  • Sayfa kaynak kodundan ve/veya başlıklarından veri çıkarma

Sorgular

Sorgu olarak sayfa bağlantıları belirtilmelidir, örneğin:

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

Sonuç Çıktı Seçenekleri

A-Parser, yerleşik Template Toolkit şablon motoru sayesinde sonuçları esnek bir şekilde biçimlendirmeyi destekler; bu da sonuçları serbest formda veya CSV ya da JSON gibi yapılandırılmış formatlarda almanıza olanak tanır.

İçerik Çıktısı

Sonuç formatı:

$data

Sonuç örneği:

<!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 - SEO uzmanları için veri kazıyıcı</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" />

Sunucu Yanıt Kodu

Sonuç formatı:

$code

Sonuç örneği:

200
not

[% response.Redirects.0.Status || code %] sonuç formatı, istekte yönlendirmeler varsa 301 durumunu yazdırmanıza olanak tanır.

İstek Verilerini Alma

$response.json\n

https://google.it

$response.json\n

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

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

Yönlendirmeleri Alma

Sorgu:

https://google.it

Sonuç formatı:

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

Sonuç örneği:

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

Yönlendirmelerle JSON

Sonuç formatı:

$response.Redirects.json

Sonuç örneği:

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

Sunucu Yanıt Durumunu Çıktılama

Sonuç formatı:

$reason

Sonuç örneği:

OK

Sunucu Yanıt Süresi

Sonuç formatı:

$response.Time

Sonuç örneği:

1.457

Sayfa Boyutunu Alma

Örnek olarak boyut üç farklı varyasyonda sunulmuştur.

Sonuç formatı:

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

Sonuç örneği:

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

Sonuçların İşlenmesi

A-Parser, sonuçları doğrudan veri çekme sırasında işlemenize olanak tanır; bu bölümde Net::HTTP veri kazıyıcı için en popüler kullanım durumlarını sunduk

H1-H6 Başlıklarını Çıktılama

Düzenli ifadeyi ekleyin (Parse custom results (Düzenli ifade kullan) seçeneği) <(h\d+)[^>]+>(.+?)<\/h\d+>, "Parse result" alanında $pages.$i.data - Page content seçin, düzenli ifadenin yanındaki alanda modifikatörleri sg seçin. Sonuç türü olarak dizi otomatik olarak seçilecektir. "Name" alanına headers yazın, ardından "$1 to" alanına tag yazın,

yanındaki artıya tıklayın ve açılan yeni "$2 to" alanına content yazın. Sonuçların genel biçiminde $p1.headers.format('$tag - $content\n') çıktısını yazın.

Örneği indir

A-Parser örnek nasıl içe aktarılır

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 Etiketlerini Toplama

Düzenli ifadeyi ekleyin (Parse custom results (Düzenli ifade kullan) seçeneği) (<meta[^>]+>), "Parse result" alanında $pages.$i.data - Page content seçin, düzenli ifadenin yanındaki alanda modifikatörü g seçin. Sonuç türü olarak dizi otomatik olarak seçilecektir. "Name" alanına meta yazın, "$1 to" alanına item yazın. Sonuç biçiminde $p1.meta.format('$item\n') kullanın.

Örneği indir

A-Parser örnek nasıl içe aktarılır

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=

Sayfalandırma Geçiş Seçenekleri

Use pages Kullanımı

Use pages. Bu işlev, önceden bilinen bir sayfa sayısı belirterek sayfalandırma üzerinde gezinmenize olanak tanır. Örnek olarak bir ürün kataloğu sitesindeki kategorilerden birini alalım https://www.proball.ru/catalog/myachi/. Üstte ve altta sayfalandırma panelini görüyoruz. Sayfa numaralarının bulunduğu simgelere tıkladığınızda, tarayıcı satırında sayfa numarası parametresinin sorgunun sonuna nasıl eklendiğini görebilirsiniz:

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

Use pages, aslında $pagenum değişkenine belirttiğimiz değer kadar artırarak sırayla numaralar atayan bir tür sayaçtır

Use pages Kullanımı

Ekran görüntüsünde görüldüğü gibi, veri kazıyıcının sorgu formatında uygun yerde $pagenum değişkeni kullanılmaktadır. Use pages işlevi tüm değerleri tarayıp sorguya yerleştirecektir, aslında sorgu için bağlantılar alacağız

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

burada $pagenum değişkeni yerine 1'den 4'e kadar 1'er adımla sayfa numarası yerleştirilecektir. Böylece istenen aralıktaki sayfalar taranmış olur. Bu yöntemin kısıtlaması buradadır - sayfalandırmada kaç sayfa olduğunu önceden bilmeniz gerekir. Açıktır ki, aynı anda birkaç kategoriyi çekerken sayfa sayısı her yerde farklı olacaktır ve bir çözüm olarak sadece tahmin edilen sayfa sayısından daha fazlasını belirtebiliriz. Ancak bu tam olarak doğru değildir, bu nedenle aşağıda bahsedilecek olan daha optimal bir çözüm vardır

Örneği indir
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=

Check next page Kullanımı

Check next page - sayfalama üzerinde ilerlemeyi sağlayan başka bir özelliktir. Kullanımının özelliği, bir sonraki sayfaya geçmek için bir sonraki sayfanın bağlantısını döndürecek bir düzenli ifade kullanmanız gerekmesidir. Bu daha kullanışlı ve en sık kullanılan yöntemdir. Ancak bunu https://www.proball.ru/catalog/myachi/ için uygulamak mümkün olmayacaktır, çünkü kodda sonraki sayfalara ait bağlantılar yoktur. Bağlantılar orada bir betik tarafından oluşturulur. Bu nedenle örnek olarak http://www.imdb.com/search/name?gender=female sitesini alalım. Burada hem listenin başında hem de sonunda sayfalama vardır. Kaynak kodu inceleyip analiz ettiğimizde, bir sonraki sayfaya geçmeyi sağlayan bağlantının varlığını görebiliriz:

img

  • Next page RegEx alanına düzenli ifadeyi yazıyoruz
  • Limit alanına geçilmesi gereken sayfa sayısını belirtiyoruz
Check next page Kullanımı

Örnekte 4 belirtilmiştir. Limiti belirterek veri kazıyıcının kaç sayfayı geçmesi gerektiğini belirleriz. Bizim durumumuzda 5 sayfa geçilecektir, çünkü sayım 0'dan başlar. Eğer 0 limiti belirtilirse, veri kazıyıcı sayfa sayısından bağımsız olarak tüm sayfalar bitene kadar çalışır. Bu, tüm sayfalardaki tüm sonuçları kazımanız gerektiğinde kullanmak için çok uygundur

Örneği indir
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=

Yukarıda belirtildiği gibi, Use pages içindeki sayfa sayısını dinamik olarak sınırlama imkanı vardır. Bunun için Use pages ve Check next page birlikte kullanılmalıdır. Use pages açıklamasında ele alınan örneği tamamlayalım ve ona Check next page işlevini ekleyelim:

Check next page Kullanımı (2)

Bu iki işlev çift olarak şu şekilde çalışır: Use pages sayfalar arası geçişi sağlar, Check next page ise bir sonrakinin var olup olmadığını kontrol eder. Check next page bir sonraki sayfayı bulamadığı anda, bu kategorinin veri çekme işlemi, Use pages içinde belirtilen tüm sayının tamamlanmasını beklemeden durdurulacaktır. Bu işlevleri birleştirerek, veri kazıyıcının çalışmasına verimlilik katar, zaman ve kaynak tasarrufu sağlarız

Örneği indir
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==

Değiştirme makrolarının kullanımı

Değiştirme makroları, belirtilen aralıktaki değerlerin ardışık olarak yerleştirilmesini sağlar

Yerleştirme makrolarının kullanımı

Bu preset şu şekilde çalışacaktır. Sorgu formatında şablonu belirterek:

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

Sorgunun içine 1 ile 10 arasındaki değer yerleştirmesini ekliyoruz (aralığı istediğiniz gibi belirleyebilirsiniz). Böylece gerekli sayıda sayfadan geçişi sağlayan şu tür sorgular elde ederiz:

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

Sayfalandırma geçişi için değiştirme makrolarının kullanımı Use pages işlevine benzer ve aynı kısıtlamalara sahiptir, yani belirli bir değer aralığı belirtmeniz gerekir. Bu yöntemin avantajı, değiştirme makroları aracılığıyla hem sayısal hem de metinsel (örneğin kelimeler veya ifadeler) farklı değerlerin yerleştirilebilmesidir. Bu sayede, görev gerektiriyorsa, sorgulara gerekli kısımları daha esnek bir şekilde ekleyebilir veya farklı dosyalarda yer alacak kısımlardan sorguların kendisini oluşturabiliriz

Örneği indir
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==

Page as query Kullanımı

Bellek tüketimini azaltmak için mantık Page as query seçeneği ile tanımlanabilir. Bu seçenek etkinleştirildiğinde, Check next page ve Use pages işlevleri her bir sonraki sayfayı ayrı bir bağımsız sorgu olarak sorgulara yerleştirecek, böylece içeriklerini bellekte biriktirmeyecektir. Page as query ayrıca sorgu seviyesinin artırılıp artırılmayacağını Increase (tools.query.add aracının çalışmasına benzer şekilde) veya artırılmayacağını Keep belirlemenize olanak tanır

Page as query Kullanımı
Örneği indir
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=

Olası Ayarlar

Parametre adıVarsayılan değerAçıklama
Good statusAllSunucudan gelen hangi yanıtın başarılı sayılacağı seçimi. Veri çekme sırasında sunucudan başka bir yanıt gelirse, istek başka bir proxy ile tekrarlanır
Good code RegExYanıt kodunu kontrol etmek için bir düzenli ifade belirtme imkanı
Ban Proxy Code RegExSunucu yanıt koduna göre proxyleri geçici olarak yasaklama (Proxy ban time) imkanı
MethodGETİstek yöntemi
POST bodyPOST yöntemi kullanıldığında sunucuya iletilecek içerik. $query – istek URL'si, $query.orig – orijinal sorgu ve Use Pages seçeneği kullanıldığında $pagenum - sayfa numarası değişkenlerini destekler.
Cookiesİstek için çerezleri (cookies) belirtme imkanı.
User agent_Güncel Chrome sürümünün user-agent'ı otomatik olarak yerleştirilir_Sayfa istekleri sırasındaki User-Agent başlığı
Additional headersŞablon motoru özelliklerini ve istek oluşturucudaki değişkenleri kullanarak özel istek başlıkları belirtme imkanı
Read only headersSadece başlıkları oku. İçeriği işlemeye gerek yoksa bazı durumlarda trafik tasarrufu sağlar
Detect charset on contentSayfa içeriğine göre kodlamayı algıla
Emulate browser headersTarayıcı başlıklarını taklit et
Max redirects count7Veri kazıyıcının takip edeceği maksimum yönlendirme sayısı
Follow common redirectsMax redirects count limitini aşarak aynı alan adı içinde http <-> https ve www.domain <-> domain yönlendirmeleri yapılmasına izin verir
Max cookies count16Kaydedilecek maksimum çerez sayısı
EngineHTTP (Fast, JavaScript Disabled)HTTP (daha hızlı, JavaScript yok) veya Chrome (daha yavaş, JavaScript açık) motorunu seçmenize olanak tanır
Chrome HeadlessSeçenek etkinse tarayıcı görüntülenmez
Chrome DevToolsChromium hata ayıklama araçlarını kullanmanıza olanak tanır
Chrome Log Proxy connectionsSeçenek etkinse, chrome bağlantılarıyla ilgili bilgiler günlüğe yazılır
Chrome Wait Untilnetworkidle2Sayfanın ne zaman yüklendi sayılacağını belirler. Değerler hakkında daha fazla bilgi.
Use HTTP/2 transportHTTP/1.1 yerine HTTP/2 kullanılıp kullanılmayacağını belirler. Bazı siteler HTTP/1.1 kullanıldığında hemen yasaklar, bazıları ise tam tersine HTTP/2 ile çalışmaz.
Try use HTTP/1.1 for Protocol errorHTTP/2 etkinken bir protokol hatası alınırsa (yani site HTTP/2 ile çalışmıyorsa), veri kazıyıcıya isteği HTTP/1.1 ile tekrarlamasını söyler
Don't verify TLS certsTLS sertifika doğrulamasını devre dışı bırakma
Randomize TLS FingerprintBu seçenek, sitelerin TLS parmak izine göre uyguladığı yasakları atlatmanıza olanak tanır
Bypass CloudFlare with ChromeCloudFlare kontrolünü otomatik olarak atlatma
Bypass CloudFlare with Chrome Max Pages20Chrome üzerinden CF atlatılırken maksimum sayfa sayısı
Bypass CloudFlare with Chrome HeadlessSeçenek etkinse, Chrome üzerinden CF atlatılırken tarayıcı görüntülenmez