paint-brush
Web Scraping Optimization: Daha Sürətli, Daha Ağıllı Scrapers üçün Məsləhətlərtərəfindən@brightdata
215 oxunuşlar

Web Scraping Optimization: Daha Sürətli, Daha Ağıllı Scrapers üçün Məsləhətlər

tərəfindən Bright Data8m2024/11/15
Read on Terminal Reader

Çox uzun; Oxumaq

Veb kazıyıcıların optimallaşdırılması məlumatların daha səmərəli çıxarılması üçün qabaqcıl texnikaların tətbiqini əhatə edir. Əsas məsləhətlərə qoşulma problemlərini və səhifə uğursuzluqlarını idarə etmək üçün xətaların idarə edilməsini həyata keçirmək, serverlərin həddindən artıq yüklənməsinin qarşısını almaq üçün eksponensial geriləmə ilə təkrar cəhdlərdən istifadə etmək və səhifə strukturunun dəyişməsi ilə qırılmanın qarşısını almaq üçün çevik CSS və ya XPath seçicilərinin yazılması daxildir. Daha sürətli kazıma üçün lxml kimi sürətli HTML analizatorlarından istifadə edin və bir əlaqə üzərindən çoxlu sorğu göndərməklə gecikməni azaltmaq üçün HTTP/2-dən istifadə edin. Bu üsullar irimiqyaslı əməliyyatlar üçün həm sürəti, həm də möhkəmliyi artıraraq, miqyaslı kazıyıcıları effektiv şəkildə ölçməyə kömək edir.
featured image - Web Scraping Optimization: Daha Sürətli, Daha Ağıllı Scrapers üçün Məsləhətlər
Bright Data HackerNoon profile picture
0-item

İmtina : Bu, Qabaqcıl Veb Scraping üzrə altı hissədən ibarət seriyamızın 3-cü hissəsidir. Serialda yenisiniz? 1-ci hissəni oxumaqla əvvəldən başlayın !


Qabaqcıl Veb Scraping seriyamızın 2-ci hissəsində siz SPA-lardan, PWA-lardan və AI ilə işləyən saytlardan məlumatların necə silinəcəyini öyrəndiniz. İndiyə qədər, əksər müasir veb saytlara qarşı işləyən bir kazıyıcı qurmaq üçün lazım olan bütün biliklərə sahib olmalısınız.


Sonra nə var? Bəzi peşəkar kazıma məsləhətləri və fəndləri ilə kazıyıcınızı optimallaşdırmağın vaxtı gəldi!

Veb kazıma sadələşdirildi - Yoxsa bu?

Veb kazıyıcı qurmaq? Hər şey skriptlə bağlıdır. 👨‍💻


Düzünü desək, əgər siz nə vaxtsa kod yazmısınızsa, bilirsiniz ki, skript yazmaq çox vaxt o qədər də çətin deyil. Burada bir neçə sətir, orda for və bum, siz məlumatı peşəkar kimi kazıyırsınız. Sadə səslənir, elə deyilmi? 😄


Ancaq problem buradadır: kiçik bir kazıyıcı yazmağın sadəliyi sizi yalançı təhlükəsizlik hissi ilə sakitləşdirə bilər. Hər kəsin oxuya biləcəyi cəmi bir neçə sətir kod olduğu halda, düzgün şərhlər, xətaların idarə edilməsi, qeydlər və hətta səliqəli abzaslarla niyə narahat olursunuz?


Şərhlərə ehtiyacınız yoxdur... yoxsa sizə?


Biz başa düşürük - niyə ehtiyacı olmayan bir şeyi həddindən artıq mühəndisləşdiririk? Həddindən artıq mühəndislik tərəqqinin düşmənidir . Bəs kazıyıcılarınızı birdən çox səhifəyə və ya hətta bütün saytlara miqyaslaşdırmaq lazım olduqda nə baş verir? 🤔


Tez və çirkli, spagetti kodlu kazıyıcınız dağılır! 🍝


Onların koduna toxunduqda tərtibatçılar əsəbiləşə bilər


Budur, sizə bəzi qabaqcıl veb kazıma məsləhətlərinə ehtiyacınız var.

Veb Scraping Optimizasiyası: Ən Yaxşı 7 Məsləhət və Fəndlər

Siz artıq adi veb kazıma məsləhətlərini eşitmiş olmalısınız: əvvəlcə kritik məlumatları olan səhifələrə üstünlük verin, sorğularınızı təsadüfiləşdirin və s. Əla məsləhətdir, amma düzünü desək, bu hiylələr köhnə xəbərlərdir. 📰


Daha təkmil ssenarilərlə məşğul olduğunuz zaman, bu əsaslar onu kəsməyə bilər. Əgər həqiqətən kazıma oyununuzu səviyyəyə qaldırmaq istəyirsinizsə, bəzi növbəti səviyyəli texnikaları araşdırmalı olacaqsınız.


Hazırsan? Bağlayın - veb kazıma bacarıqlarınızı növbəti səviyyəyə daşımağın vaxtı gəldi! 💪


⚠️ Xəbərdarlıq: Bəzi məsləhətlər sizə tanışdırsa, narahat olmayın - davam edin! Daha dərinə daldıqca çoxlu maraqlı məlumatlar var! 🤿

Səhvlərin idarə edilməsini həyata keçirin

Veb kazıma zamanı ən çox yayılmış səhvlərdən biri İnternetin sehrli, yanılmaz bir texnologiya olmadığını unutmaqdır. Bir sayta sorğu göndərdiyiniz zaman, bir sıra şeylər səhv ola bilər (və nə vaxtsa olacaq). ❌


Bəzi ümumi ssenarilərə baxaq:

  • Wi-Fi və ya bağlantınız bir anda hıçqıra bilər

  • Veb saytı yerləşdirən server əlçatan olmaya bilər

  • Axtardığınız səhifə artıq mövcud olmaya bilər

  • Hədəf saytda müvəqqəti yavaşlama baş verə bilər ki, bu da zaman aşımı xətasına səbəb olur


İndi məlumatların təhlili, əvvəlcədən işlənməsi və verilənlər bazasına ixracını qarışdırın və xaos üçün mükəmməl bir reseptiniz var. 💥


Bütün qırıntı elementlərini qarışığa əlavə edin


Yaxşı, həll yolu nədir? İdarəetmə xətası ! 🛡️


Səhvlərin idarə edilməsi veb kazımada ən yaxşı dostunuzdur. Skriptiniz çox güman ki, onlarla (və ya minlərlə) səhifəni işləyəcək və bir səhv bütün əməliyyatınızı sıradan çıxarmamalıdır.


Unutmayın ki, try ... catch bloku sizin dostunuzdur. İstəklərinizi və emal məntiqinizi bağlamaq üçün ondan istifadə edin. Həmçinin, unutmayın ki, əksər HTTP kitabxanaları pis HTTP cavabları üçün istisnalar qaldırmır (məsələn, 404 və ya 500 ). 😲


Əgər HTTP status kodları ilə tanış deyilsinizsə, aşağıdakı videoya baxın:


Məsələn, Python sorğular kitabxanasında cavab status kodunu aşağıdakı kimi əl ilə yoxlamaq lazımdır:

 import requests response = requests.get("https://example.com") if response.status_code == 200: # handle the successful response... else: # handle the error response...



Və ya ekvivalent olaraq, rise_for_status() metodundan istifadə edin:

 import requests try: response = requests.get("https://example.com") # raises an HTTPError for bad responses (4xx or 5xx) response.raise_for_status() # handle the successful response... except requests.exceptions.HTTPError as http_err: # handle an HTTP error... except requests.exceptions.RequestException as req_err: # handle a request error...

Sorğunun təkrar cəhdləri ilə uğursuzluğun bərpası

Qabaqcıl veb kazıma skriptiniz yalnız səhvləri idarə edə bilməməli, həm də onlardan qurtulmalıdır. Veb kazıma ilə əlaqəli səhvlərin əksəriyyəti veb sorğuları ilə əlaqəli olduğundan, təkrar cəhd edilə bilən sorğuları həyata keçirməklə kazıyıcınızın effektivliyini əhəmiyyətli dərəcədə artıra bilərsiniz .


Konsepsiya sadədir: sorğu uğursuz olarsa, müvəffəqiyyətli olana qədər yenidən cəhd edin - bir, iki, üç və ya daha çox dəfə. 🔄


Ancaq burada diqqət çəkən məqam budur: uğursuz sorğunun ən çox yayılmış səbəblərindən biri hədəf serverin müvəqqəti olaraq işləməməsi və ya yavaş olması olduğundan, eyni sorğunu qısa müddət ərzində dəfələrlə göndərməklə onu sıxışdırmaq istəmirsiniz.


Xoşbəxtlikdən, o qədər də mürəkkəb deyil ...


Əgər sorğu indi uğursuz olarsa, o, dərhal yenidən uğursuz ola bilər. Eksponensial geriləmə oyuna girdiyi yerdir!


Dərhal təkrar cəhd etmək əvəzinə, bu texnika təkrar cəhdlər arasındakı vaxtı tədricən artırır və hədəf serverə bərpa etmək üçün vaxt verməklə uğur şansınızı artırır. ⏳


Fərdi kodla sadə təkrar cəhd strategiyalarını əl ilə həyata keçirə bilsəniz də, bir çox HTTP müştəriləri təkrar cəhdləri avtomatik idarə etmək üçün daxili yardım proqramları və ya kitabxanalarla gəlir. Məsələn, Axios, aşağıdakı kimi istifadə edə biləcəyiniz axios-retry kitabxanasını təklif edir:


 const axios = require("axios"); const axiosRetry = require("axios-retry"); axiosRetry(axios, { retries: 3, retryDelay: axiosRetry.exponentialDelay }); axios.get('https://example.com') .then(response => console.log(response.data)) .catch(error => console.log("Request failed:", error));


Eynilə, Python-un urllib3 paketi əksər Python HTTP müştəriləri ilə problemsiz inteqrasiya edən Retry sinfi ilə gəlir.

Ümumi Seçiciləri yazın

DevTools-da elementləri yoxlayarkən, siz siçanın sağ düyməsini sıxıb "Kopyala seçici" seçimini seçə bilərsiniz:


Seçicinin DevTools-dan kopyalanması


Ancaq xəbərdarlıq edin, nəticə belə görünə bilər:

 #__next > div > main > div.sc-d7dc08c8-0.fGqCtJ > div.sc-93e186d7-0.eROqxA > h1


Bu, şübhəsiz ki, veb kazıma üçün ideal deyil….


Oh, noooo!


Problem? Bu kimi həddindən artıq xüsusi seçicilər səhifə strukturu dəyişdikdə asanlıqla poza bilər. Seçiciniz nə qədər detallı olsa, bir o qədər kövrək olur.


Veb qırıntınızı daha möhkəm etmək üçün seçicilərinizi çevik saxlamalısınız. Üslubla əlaqəli siniflərə (hər zaman dəyişən) etibar etmək əvəzinə, id , data- və ya aria- kimi dəyişmə ehtimalı az olan atributlara diqqət yetirin . Bu atributların əksəriyyəti sınaqəlçatanlıq üçün nəzərdə tutulub, ona görə də onlar zamanla ardıcıl qalmağa meyllidirlər. 💡


CSS seçicilərini oxumaq və başa düşmək daha asan olsa da, XPath daha çox güc təklif edir. Ancaq narahat olmayın - sadə CSS seçiciləri ilə çox vaxt eyni nəticələrə nail ola bilərsiniz və sizi mürəkkəb XPath koduna ehtiyacdan xilas edə bilərsiniz. 😌


Bununla bağlı əlavə məlumat üçün XPath vs CSS seçiciləri haqqında bələdçimizə nəzər salın!

Sürətli HTML Ayrışdırıcılarına üstünlük verin

HTML səhifələrinin təhlili vaxt və resurslar tələb edir, xüsusən də böyük, iç-içə DOM ilə məşğul olursunuzsa. Əgər kazıyıcınız yalnız bir neçə səhifəni təhlil edirsə, bu o qədər də böyük məsələ deyil.


İndi, kazıma əməliyyatınız böyüdükdə və milyonlarla səhifədən məlumat əldə etməli olduqda nə baş verir? Bu kiçik yük server resurslarını tez bir zamanda boşalda bilər və ümumi qırıntı vaxtınıza saatlar əlavə edə bilər. ⏳


Daha dərindən başa düşmək üçün bu resurslara müraciət edin:

Tam müqayisə axtarırsınız? Ən yaxşı HTML analizatorları haqqında məqaləmizi oxuyun.


Yaxşı xəbər? Bir analizatordan digərinə keçid o qədər də çətin deyil. Məsələn, BeautifulSoup -da bu, sadəcə sadə bir parametr dəyişikliyidir:

 from bs4 import BeautifulSoup # or using html.parser soup = BeautifulSoup(html_content, "html.parser") # or using lxml parser soup = BeautifulSoup(html_content, "lxml")


Bəs Chrome kimi brauzerlərdə quraşdırılmış HTML analizatorları haqqında nə demək olar? 🤔


Aşağıdakı videoda daha çox məlumat əldə edin:

Daha sürətli sorğular üçün HTTP/2-dən istifadə edin

HTTP/2, bir əlaqə üzərindən birdən çox sorğuya icazə verən HTTP-nin yenilənmiş versiyasıdır. Bu, gecikməni azaldır və kazıma tapşırığınızın ümumi performansını yaxşılaşdıra bilər.


Saytın HTTP/2-ni dəstəklədiyini yoxlamaq üçün sadəcə olaraq brauzerinizdə DevTools-u açın, “Şəbəkə” sekmesine keçin və “Protokol” sütununu axtarın— h2 deyirsə, sayt HTTP/2-dən istifadə edir:


google.com HTTP/2 istifadə edir


Təəssüf ki, bütün HTTP müştəriləri və kazıma kitabxanaları HTTP/2-ni dəstəkləmir. Bununla belə, Python üçün HTTPX kimi alətlər HTTP/2 üçün tam dəstək təklif edir .

Tapşırıqların Paralelləşdirilməsi

Veb kazıma əsasən I/O ilə əlaqəli bir vəzifədir - serverə sorğu göndərirsiniz, cavabı gözləyirsiniz, məlumatları emal edirsiniz və təkrar edirsiniz. Gözləmə zamanı kazıyıcınız əsasən boşdur, bu da səmərəsizdir.


Skreperinizin tələblərini emal sürəti


Həll yolu? Paralellik və ya paralellik !


Eyni anda birdən çox sorğu göndərməklə siz bu ölü vaxtları minimuma endirə və şəbəkə istifadəsini optimallaşdıra bilərsiniz.


🚨 Amma diqqətli olun! 🚨


Çox sayda eyni vaxtda sorğu ilə bir serveri bombalamaq sürətin məhdudlaşdırılmasına və ya IP-nin qadağan edilməsinə səbəb ola bilər - iki məşhur anti-scraping tədbiri . 😬


İpucu : Siz həmçinin təhlil tapşırıqlarını paralelləşdirə bilərsiniz, xüsusən də birdən çox CPU istifadə edirsinizsə, bu, məlumatların çıxarılması prosesini sürətləndirəcək. ⚡

Süni intellektə əsaslanan Adaptiv Alqoritmləri qəbul edin

Süni intellektə əsaslanan adaptiv alqoritmlər dəyişikliklərdən xəbərdar olmaq üçün real vaxt rejimində davranışlarını tənzimləyərək verilənlər və HTML səhifə strukturlarındakı nümunələrdən öyrənir. 😮


Bu veb kazıma üçün oyun dəyişdiricisidir! 🤯


Veb saytlar planlarını yenilədikdə və ya anti-bot tədbirləri tətbiq etdikdə, bu alqoritmlər tez uyğunlaşa bilər və kazıyıcınızın rəvan işləməsini təmin edir. 🧠


Bir sözlə, onlar kazıyıcıları daha ağıllı edir, hətta sayt gözlənilməz əyri toplar atdıqda belə məlumatları səmərəli şəkildə çıxarmağa kömək edir. ⚾ Uyğunlaşan alqoritmlərlə bu, zamanla inkişaf edən kazıyıcıya sahib olmaq kimidir!


Forrest Knight tərəfindən hazırlanmış bu videonun 4-cü fəslində daha çox məlumat əldə edin:

Veb Scraping Optimizasiyası üçün Ən Yaxşı Alət

Əlbəttə, indiyə qədər qeyd etdiyimiz bütün məsləhətlər və tövsiyələr kazıyıcınızı daha sürətli, daha etibarlı, möhkəm və effektiv edə bilər. Ancaq gəlin real olaq - onlar həm də bir çox mürəkkəblik gətirir. 😅


Yaxşı xəbər budur ki, bu dərslərin əksəriyyəti kazıma layihələrinin böyük əksəriyyətinə aiddir. Beləliklə, hər şeyi sıfırdan kodlaşdırmaq əvəzinə, xüsusi tapşırıqları həll etmək üçün əvvəlcədən qurulmuş funksiyalardan istifadə edə bilərsiniz. Bright Data-nın Scraping Funksiyaları məhz bunu təklif edir!


73+ hazır JavaScript funksiyası ilə istifadəçilər 195+ ölkədə fəaliyyət göstərən 38K-dan çox kazıyıcı düzəldiblər. Bu, bir ton qırıntı gücüdür! 📈


Veb məlumatlarının toplanmasına səy göstərmədən qırmaq, kilidini açmaq və miqyasını artırmaq üçün hazırlanmış iş vaxtı mühiti ilə inkişafınızı sürətləndirin:

Son Düşüncələr

İndi təcrübəli kazıma tərtibatçılarının fikirləri ilə kazıyıcınızı necə səviyyəyə qaldıracağınızı bilirsiniz!


Unutmayın ki, bu, yalnız 3-cü hissədir, ona görə də biz təkmil veb kazıma üçün altı hissədən ibarət səyahətimizin yarısındayıq! Bu təhlükəsizlik kəmərini bağlı saxlayın, çünki biz daha qabaqcıl texnologiya, ağıllı həllər və insayder məsləhətləri ilə tanış olmaq üzrəyik.


Növbəti dayanacaq? Süni intellektə əsaslanan proksi idarəçiliyinin gücündən istifadə edin! 🌐

L O A D I N G
. . . comments & more!

About Author

Bright Data HackerNoon profile picture
Bright Data@brightdata
From data collection to ready-made datasets, Bright Data allows you to retrieve the data that matters.

ETİKET ASIN

BU MƏQALƏ TƏQDİM EDİLMİŞDİR...