CodeGym /Kurslar /Python SELF AZ /requests_html istifadə edərək dinamik məzmunun yüklənməsi...

requests_html istifadə edərək dinamik məzmunun yüklənməsi

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Dinamik məzmun və JavaScript

Əgər sən artıq BeautifulSoup və requests kimi kitabxanalarla veb-skraypinqin əsas prinsiplərini öyrənmisənsə, indi işin daha maraqlı tərəflərinə baş vurmağın vaxtıdır. Bugün biz dinamik olaraq yalnız səhifəni skroll etdikcə yüklənən məzmunla necə işləyə biləcəyimizi müzakirə edəcəyik. Sənin brauzerin sonsuz lentlərin fanatı çıxa bilər, amma indi sən bu bacarığı öz skriptlərinə də öyrədəcəksən! 🤖

İnternet dinamik şəkildə yüklənən səhifələrlə doludur, burada məzmun yalnız istifadəçinin JavaScript ilə qarşılıqlı əlaqəsi zamanı yenilənir və yaranır, hansı ki, öz növbəsində "möcüzə"ləri müştəri tərəfində edir. Bu veb-skraypinq edənlər üçün həm xeyir-dua, həm də qarğış ola bilər. Bir tərəfdən belə saytlarda istifadəçilər üçün daha interaktiv və rahat ola bilər, digər tərəfdən isə belə səhifələri skraypinq etmək daha çətin olur, çünki requests kitabxanası JavaScript-i anlamır.

2. requests_html kitabxanası

Şükür ki, artıq bilirsən, bu dünyada requests_html var — requests-in qüvvəsini və Pyppeteer-in browser-ə oxşar rendering imkanlarını birləşdirən kitabxana. Bu kitabxana dynamic content ilə dolu səhifələri yükləməyə və render etməyə, həmçinin JavaScript yerinə yetirməyə və səhifələri scroll etməyə imkan verir.

requests_html-ın quraşdırılması

İşə başlamaq üçün əvvəlcə bu kitabxananı quraşdırmalısan. Əgər hələ bunu etməmisənsə, bu əmri icra et:

Bash
pip install requests-html

requests_html-la işləmək

Quraşdırmanı tamamladıqdan sonra baxaq görək, requests_html-ı dynamic content-i yükləmək və istifadə etmək üçün necə işə sala bilərik.

Nümunə: Səhifəni yükləmək və render etmək

Sadə bir nümunə ilə başlayaq: səhifəni yükləmək, JavaScript-i yerinə yetirmək və məlumat çıxarmaq. Gəlin bir səhifəni yüklədiyimiz və yalnız JavaScript yerinə yetirildikdən sonra görünən elementin mətnini aldığımız nümunəyə baxaq.

Python

from requests_html import HTMLSession

# Sessiya yaradırıq
session = HTMLSession()

# Səhifəni yükləyirik
response = session.get('https://example.com/dynamic-page')

# Səhifəni render etmək üçün JavaScript yerinə yetiririk
response.html.render()

# Render edildikdən sonra görünən elementin mətnini çıxarırıq
content = response.html.find('#dynamic-content', first=True)
print(content.text)

Bu nümunədə biz render() metodundan istifadə edirik ki, requests_html-a səhifədəki JavaScript-i yerinə yetirməyə və standart yükləmə ilə görünə bilməyən content-i render etməyə icazə verək.

3. Səhifələrin avtomatik sürüşdürülməsi

Bəzən dinamik kontent dərhal yüklənmir, yalnız səhifənin sürüşdürülməsi zamanı görünür. requests_html burada sizə kömək edə bilər, səhifənin sürüşdürülməsini simulyasiya edərək daha çox məlumatı yükləməyə imkan verir.

Avtomatik sürüşdürmə nümunəsi

Tutaq ki, sizin sonsuz xəbər lentinə malik olan bir səhifəniz var və siz mümkün qədər çox elementi çıxarmaq istəyirsiniz. Bunu belə etmək olar:

Python

from requests_html import HTMLSession

session = HTMLSession()
response = session.get('https://example.com/infinite-scroll')

# Səhifəni render edirik və sürüşdürürük
response.html.render(scrolldown=5, sleep=1)

# Bütün xəbər elementlərini çıxarırıq
news_items = response.html.find('.news-item')

for news_item in news_items:
    print(news_item.text)

Burada render() metodu scrolldownsleep parametrləri ilə genişləndirilib. Bunlar səhifəni aşağıya neçə dəfə sürüşdürəcəyimizi və sürüşdürmələr arasında nə qədər gözləyəcəyimizi göstərir.

4. Praktiki tətbiq

Ümumiyyətlə niyə belə bir boş işlə, avto-scroll kimi, məşğul olmaq lazımdır? 🤔

  • Marketinq tədqiqatları: Bir çox şirkət belə səhifələri trends və istehlakçı davranışını təhlil etmək üçün faydalı ola biləcək məlumatların davamlı çıxarılması üçün istifadə edir.
  • Sosial şəbəkələrin monitorinqi: Çoxlu sosial şəbəkə platforması sonsuz feedlərdən istifadə edir ki, bu da requests_html-i belə mənbələrdən məlumat toplamaq və izləmək üçün faydalı edir.
  • Xəbərlər və yeniliklər: Sonsuz feedlərdə olan xəbər başlıqları və məqalələri çıxarmaq analiz üçün operativ məlumat təmin edir.

5. Tipik səhvlər və onların həlli

Dinamik səhifələrlə və requests_html ilə işləyərkən çox vaxt səhvlər baş verə bilər. Bir neçə yayılmış nümunəni nəzərdən keçirək:

Render etmə ilə problem

Bəzən render() metodu uğurla başa çatmaya bilər, xüsusilə səhifə çox böyük və ya mürəkkəbdirsə. Belə hallarda render vaxtını artırmaq üçün timeout parametrindən istifadə edə bilərsiniz, ya da scroll sayını azalda bilərsiniz.

Python
response.html.render(timeout=30)

Parasitar skript icrası

Elə hallar ola bilər ki, səhifədəki JavaScript skriptin icrasını bloklayır və ya problemlər yaradır. Lazım olan elementlərin görünməsini gözləmək üçün wait parametrindən istifadə edə bilərsiniz.

Python
response.html.render(wait=2)

Ekran icazəsi və cihazın tipi

Bəzi saytlar məzmunu ekranın icazəsindən və ya cihazın tipindən asılı olaraq təqdim edə bilər. Sorğunun hansı user-agent ilə göndərildiyini və məzmunun necə render olunduğunu yoxlayın.

Python

response.session.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'

6. Başqa nələri oxumaq olar

requests_html — güclü bir alətdir, amma onun bütün imkanlarından tam istifadə etmək və tipik səhvlərdən qaçmaq üçün rəsmi sənədləşməni öyrənin. Bu sənədləşmə sizə səhifələrin mürəkkəb renderini və scroll-u necə idarə etməyi daha dərindən başa düşməyə kömək edəcək.

Bu məqamda artıq siz dinamik kontentdən və sonsuz lentlərdən çəkinməmək üçün lazım olan hər şeyə maliksiniz. Diqqətli olun, skriptinizin "ağ hacker", insanlara öz vəzifələrini avtomatlaşdırmağa kömək edən bir dost olduğunu göstərməyi unutmayın və zərərli məqsədlər güdmədiyinizi unudun! 😇

1
Опрос
Dinamik kontenti oxumaq,  33 уровень,  4 лекция
недоступен
Dinamik kontenti oxumaq
Dinamik kontenti oxumaq
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION