ANA SƏHİFƏKİTABƏVVƏLKİSONRAKI

Məlumatı vebdən alarkən

Siz hər şeyi sınaqdan çıxardınız, ancaq hələ də əlinizi istədiyiniz məlumatın üstünə qoya bilmirsiniz. Siz məlumatı veb şəbəkədə tapmısınız, lakin heç bir endirmə variant yoxdur. “köçürmək-yapışdırmaq” komandası da size eşitmir. Qorxmayın hələ də bunun bir yolu vardır.
Məsələn, siz:

  • Məlumatı veb əsaslı, interfeysləri onlayn məlumat bazaları və bir çox veb tətbiqi proqramları ilə təmin olunmuş (tvitter, facebook və başqalar) APİ-lərdən alın. Bu dövlət və kommersiya xarakterli məlumatlara daxil olmağın social media saytlarında olduğu kimi fantastic bir yoludur

  • Məlumatı PDF-lərdən çıxarın.Bu çox çətindir. PDF printerlər üçün bir dildir və sənədin içərisində olan məlumatın quruluşuna dair heç bir informasiyaya malik deyil. PDF-lərdən informasiyanın çıxarılması bu kitabın əhatə dairəsindən kənardır, lakin elə alətlər və qaydalar vardır ki, bunu etməkdə sizə kömək edə bilər.

  • Veb saytarın ekranlarını qazıyın. Ekranı qazıyarkən siz nor4mal bir veb səhifədən quruluşa malik olan informasiyanı qazıma aləti ilə və yaxud kiçik bir kod yazmaqla çıxarırsınız. Bu metod güclüdür və müxtəlif yerlərdə istifadə oluna bilər, ancaq bu veb səhifənin necə işlədiyi haqda biliklərə malik olmağı tələb edir.

O qədər çoxlu texniki variantlarla yanaşı, siz sadə variantları da unutmayın: bəzən çox vaxt maşınla oxunula bilən məlumatı olan faylları axtarmağına və yaxud lazım olan məlumatı bir saxlayan təşkilatdan onu istəməyə dəyər. Bu fəsildə biz HTML veb saytından məlumatları qazımağa dair çox ümumi bir misalı nəzərdən keçirəcəyik

Maşınla oxuna bilən məlumat nədir?

Bu metodların əksəriyyətinin məqsədi maşınla oxuna bilən məlumata giriş əldə etməkdir. Maşınla oxuna bilən məlumat insan istifadəçilər üçün deyil, kompüterdə emal etmək üçün yaradılır. Belə məlumatın quruluşu əslində göründüyü kimi deyil, məlumatın özü ilə əlaqədar olur. Asan və maşınla onuna bilən formatlara missal olaraq CSV, XML, JSON, və Excel faylları göstərmək olar. Ancaq Üord sənədlər,HTML səhifələri fə PDF faylları məlumatın əyani quruluşu ilə daha çox əlaqədar olurlar. Məsələn PDF elə bir dildədir ki, birbaşa sizing printerinizlə danışır, səhifədə fərqli işarələrdən daha çox xətlərin və nöqtələrin vəziyyəti ilə əlaqədar olur.

Veb saytların qazınması: Nədən ötrü?

Bunu hər kəs etmişdir: gedirsiniz bir veb sayta maraqlı bir cədvəl görürsünüz çalışırsınız ki, Excel üzərindən onu köçürəsiniz., oraya bir neçə rəqəm əlavə edərək sonraya saxlayasınız. Ancaq bəzən bunlar işləmir, və informasiya bütün veb saytlara yayılır. Sürətlə, əl ilə köçürmək isə yorucu olur. Belə ççıxır ki, bir qədər kodlaşdırmadan istifadə etmək lazımdır.
Qazımanın üstünlüyü ondadır ki, bunu istənilən vebsaytdan edə bilərsən Hava məlumatlarından dövlət xərclərinə qədər. Hətta həmin saytda xam məlumata giriş üçün APİ olmasa da bu mümkün olur.

Nəyi qazımaq olar, nəyi olmaz

Nəyin qazına bilməsi üçün limitlər vardır. Bəzi amillər vardır ki, saytı qazımağı məhdudlaşdırır. Buraya daxildir:

  • Kiçik, heç bir quruluşa malik olmayan informasiya üçün pis formatlanmış HTML codu, köhnə hökumət vebsaytlarında olduğu kimi.

  • Eniləşdirmə sistemləri.Avtomatik daxilolmaların, daha doğrusu, CAPTCHA kodların və pullu girişlərin qarşısını almaq üçündür.

  • Brauzerin kukiləri vasitəsilə istifadəçilərin nə etdiklərini izləməyə əsaslanan mövsümi əsaslı sistemlər.

  • əşyaların mükəmməl siyahılarının olmaması, açar kart axtarışı imkanları

  • Server rəhbərliyi tərəfindən mütəmadi girişin bağlanması

Burada başqa məhduduyyətlər dəsti də vardır ki, onlar qanuni maneələrdir. Bəzi ölkələr məlumat bazası hüquqlarını tanıyırlar və bu sizing onlaynda dərc olunmuş informasiyanı təkrar istifadə etmənizi məhdudlaşdırır. Bəzən lisenziyadan imtinanı seçərək siz bunu bir təhər edə bilərsiniz, yəni bunun üçün ola bilsin ki, ki sizin xüsusi journalist hüququnuz ola bilər.Sərbəst şəkildə dövlət məlumatlarını qazıyıb götürmək yaxşı olardı, ancaq ola bilsin ki, siz çap etməzdən qabaq məlumatın doğruluğunu yoxlamaq istədiniz. Kommersiya təşkilatları və bəzi QHT-lər buna daha az dözümlülük göstərərək deyə bilərlər ki, siz onların sistemlərini sabotaj edirsiniz. Başqa bir məlumat ayrı ayrı şəxslərin məxfilik hüququnu pozar və bununla da məlumatın özəlliyi və peşə etikası qanunları pozulmuş olar.

Məlumatın qazınması üçün kömək edən alətlər

Tİndi broauzer genişlənmələri və biir sıra veb xidmətlər də daxil olmaqla çoxlu sayda proqramlar vardır ki, veb saytdan əsaslı şəkildə məlumatın götürülməsində istifadə oluna bilər. Brauzerdən asılı olaraq, “oxunabilən” kimi proqramlar (səhifədən mətni götürməyə kömək edir.) yaxud, “hamısını endirin” proqramı (eyni zamanda çoxlu faylları endirməyə imkan verir) bəzi yorucu tapşırıqları avtomatlaşdırmağa kömək edir. Google-un Scraper extension aləti veb səhifələrdən cədvəlləri götürmək üçün yaradılmışdır. FireBug kimi dizayner genişlənmələri (Firefox brauzerində eyni şey artıq Chrome, Safari və İE daxil edilmişdir.) sizə veb səhifənin necə qurulmuş olmasını və sizin brauzerlə onun arasında hansı əlaqələrin olmasını müəyyən etməyə imkan verir.
ScraperWiki elə bir veb saytdır ki, sizə Python, Ruby and PHP də daxil olmaqla müxtəlif proqram dillərində qazımaları kodlaşdırmağa imkan verir. Əgər siz öz kompüterinizdə proqram mühiti yaratmadan məlumatları qazımağa başlamaq istəyirsinizsə, yol budur. Google Spreadsheets and Yahoo kimi veb xidmətləri vardır. Pipes sizə başqa veb saytlardan d məlumat çıxarmağa imkan verir.

Veb qazıyıcısı necə işləyir?

Veb qazıyıcıları adətən Python, Ruby or PHP kimi proqram dillərində yazılmış kiçik kodlardır.. Düzgün olan dilin seçilməsi sizin daxil olduğunuz cəmiyyətdən daha çox asılıdır: Əgər sizin çalışdığınız xəbər bölməsində və ya şəhərdə bu dillərdən biri ilə işləyən vardırsa, onda həmin dili seçmək daha faydalı olar.
Bundan öncə göstərdiyimiz bəzi klik etməklə qazıma alətləri başlamaq üçün daha faydalı ola bilər. Veb saytdan nəyisə qazıma işi düzgün səhifələri seçərkən bu səhifələrdəki düzgün elementlərin seçilməsi və arzu olunan informasiyanın qazınması zamanı bir qədər mürəkkəbləşir. Bu tapşırıqlar proqramlaşdırma haqqında deyil, veb saytının quruluşu və onun başa düşülməsi haqqındadır.
Veb saytı göstərərkən sizing brauzer iki texnologiyadan istifadə edir. HTTP serverlə ünsiyyət ququrlazım olan resursu, məsələn, sənədləri, şəkilləri, və yaxud videoları tələb edir. HTML veb saytların yaradıldığı dildir.

Veb səhifənin anatomiyası

Hər hansı bir səhifə qutuların ierarxiyası (piramidası) formasında qurulur.(bunlar HTML “tag”ları adlanır). Böyük bir qutunun içərisində nisbətən kiçik qutular olur. Məsəlnə bir cədvəlin içərisində sütunlar, sıralar və xanalar olur Müxtəlif funksiyaları yerinəı yetirən müxtəlif taqlar (əlaqələr) olduğu kimi – onlardan bəziləri çərçivələr, cədvəllər, təsvirlər və linklər yaradır. Taqların əlavə xüsusiyyətləri də ola bilər. (onlar unikal təyinedicilər ola bilər, qruplara “siniflərə” məxsus ola bilərlər.) bunlar bir sənədin içərisində fərdi elementləri hədəf seçə bilərlər. Müvafiq elementlərin buy olla seçilməsi və onların məzmununun çıxarılması qazıma işinin açarıdır.

Veb səhifəsində ayrı ayrı elementlərə baxış: çərçivələrin içərisindəki hər bir şey daha kiçik çərçivələrə bölünə bilər. Veb səhifələri qazımaq üçün sizin HTML sənədi içərisində müxtəlif tip elementlər haqqında müəyyən biliklərə yiyələnməyinizə ehtiyac vardır. Məsələn, “tabel” elementi bütünlükdə cədvəli əhatə edir və onun sıraları üçün “tr” və hər bir xanası üçün “td” cədvəl məlumatı vardır. Ən çox rast gələcəyiniz işlənən element “dlv”- dirk i əsasmənası məzmunun blok edilməsidir. Bu elementləri daha yaxşı hiss edə bilmək üçün gərək brauzerinizdə developer toolbar- dan istifadə etsəniz: onlar sizə veb səhifənin hər hansı bir hissəsi üzərində dayanaraq işləməyinizə və altından xətt çəkilmiş kodun nə olduğunu görməyə imkan verər. Taqla kitab sonluqları kimi işləyir, bir bölmənin başlanğıcını və sonunu göstərir. Məsələn, <em> kursivlə seçilmiş mətnin başlanğıcını </em>isə həmin bölmənin sonunu göstərir. Asandır.

figs/incoming/04-CC.png
Şəkil 57. Beynəlxalq Atom Enerjisi Agentliyi (IAEA- BAEA) portal (news.iaea.org)

Bir misal: Nüvə hadisələrinin Python – la qazınması

NEWS Beynəlxalq Atom Enerjisi Agentliyinin batmaqda olan dünyada radiasiya hadisələri barədə portaldır. (və qəribə adı olan klubun üzvlüyünə güclü rəqibdir.)Bu veb səhifəsi hadisələri sadə blog şəklində verir ki, onları asanlıqla qazıyıb götürmək olur. Başlamaq üçün ScraperWiki-dən yeni bir Python qazıyıcısı yaradın, və siz yardımçı kodları nəzərə almasaq, demək olar ki boş olan mətn ərazisində təmsil olunacaqsınız. Başqa bir Brauzerin pəncərəsində İAEA saytını, öz brauzerinizdə isə yaradıcı alətlər panelini açın “Elementlər”-də baxın və çalışın ki, bir xəbər başlığı üçün HTML elementini tapasınız. Sizin brauzerinizin yaradıcı alətlər paneli veb səhifədəki elementləri altından xətt çəkilmiş HTML kodu ilə əlaqələndirməyə kömək edir.

Bu səhifəni tədqiqi açıqlayacaq ki, <h4> <table>-ın içərisindəki elementlərdir.Hər bir yenilik bir <tr> sırasıdır ki tərkibində şərh və ayın tarixi vardır. əgər biz bütün hadisələrin başlıqlarını çıxarmaq istəyiriksə, o zaman biz bütün mətni başlıq elementləri içərisində gətirərkən cədvəldəki hər bir sıranı ardıcıl seçmək yolunu tapmalıyıq

Bu prosesi kodlaşdırmaq üçün atılan bütün addımlardan xəbərdar olmalıyıq. Tələb olunan bütün addım növlərini duymaq üçün sadə bir oyun oynayaq: özünüzün ScraperWiki pəncərəsində bu qazıyıcını yaradarkən edəcəyiniz hər bir işə görə (hər biz xətt üçün diez işarəsi qoyun ki, PYTHON-a desin ki, bu əsil kompüter kodu deyil.) özünüz üçün fərdi təlimatlar yaradın.

# cədvəldəki bütün sıralara baxın
# Unicorn sol tərəfdən kənara çıxmamalıdır.

Çalışın, bacardığınız qədər dəqiq olun və elə düşünməyin ki, bu proqram sizing qazımağa cəhd edəcəyiniz səhifə haqqında nə isə bilir.
Siz oraya yalançı kod yazdıqdan sonra gəlin bunu biz birinci qazıyıcı üçün yazdığımız kodla müqayisə edək

import scraperwiki
from lxml import html

Birinci bölmədə biz kitabxanalardan mövcud olan funksionallığı = əvvəllər yazılmış kodların parçalarını gətiririk. Scraperwiki bizə, LXML-in HTML sənədlərinin təhlili üçün yaradılmış bir alət olduğuna görə veb saytları endirmək bacarığı verəcək. Yaxşı xəbər, siz ScraperWiki ilə Python qazıyıcısı yaradırsınız bu iki xətt həmişə eyni olacaqdır.

url = "http://www-news.iaea.org/EventList.aspx"
doc_text = scraperwiki.scrape(url)
doc = html.fromstring(doc_text)

Sonra bu kod ad yaradır (fərqləndirici): URL və IAEA səhifəsinin URL-nu səhifənin dəyəri qiyməti elan edir. O qazıyıcıya bildirir ki, bu şey mövcuddur və biz ona diqqət yetirməliyik. Yadda saxlayın ki, URL özü dırna işarəsindədir, proqram kodunun bir hissəsi deyil, bir naqildir, teldir, işarələrin ardıcıllığıdır. Biz yalnız sonra url fərqləndiricisindən scraperwiki.scrape funksiyasına giriş kimi istifadə edirik. Funksiya müəyyən olunmuş işi yerinə yetirəcəkdir- yəni bu halda veb səhifəsini endirəcəkdir. Bu başa çatdıqdan sonra ğzünün çıxışını başqa bir fərqləndiriciyə verəcəkdir: doc_text. doc_text bu zaman veb saytda olan brauzerinizdə gördüyünüz əyani formanı deyil, taq-lar da daxil olmaqla əsil mətni ifadə edəcəkdir. Bu forma o qədər də asan olmadığına görə biz başqa bir funksiyadan, elementlərə daha asanlıqla müraciət etməyimiz üçün Sənədin Obyect Modeli adlanan (SOM-DOM) xüsusu nümayəndəlik yaradaraq html.fromstring-dən istifadə edəcəyik.

for row in doc.cssselect("#tblEvents tr"):
link_in_header = row.cssselect("h4 a").pop()
event_title = link_in_header.text
print event_title

Bu yekun addımda cədvəlimizdə hər bir sıranı tapmaqdan ötrü SOM-dan istifadə edərək hadisənin başlığını cədvəlin başlığında götürəcəyik. Iki məfhumdan istifadə olunur: ilmə üçün və element seçilməsi.( .cssselect). İlmə üçün əsasən öz adına uyğun hərəkət edir, o bu şeylərin (sıraların) siyahısını keçərək hər birnə ləqəb qoyur və yalnız sonra abzasla göstərilən hər bir sıra üçün təlimatlar verir. O biri yeni məfhum elementin seçilməsi sənəddə elementlərin tapılması üçün xüsusi dildən istifadə olunmasını tələb edir. CSS selektorlar adətən HTML elementlərinə qabıq informasiyanın əlavə olunması üçün və səhifənin istənilən elementini çox dəqiqliklə seçərək götürmə zamanı istifadə olunur. Bu halda biz #tblEvents tr seçirik və ID tblEvents-I olan hər bir <tr> cədvəl daxilində hər bir elementə uyğunlaşdıracaq. Qeyd etmək lazımdır ki, bu bütün <tr> elementlərinin siyahısını qaytaracaq.

Növbəti sətirdən göründüyü kimi, (7-ci sətir) biz hər hansı tapmaq üçün biz başqa selektor seçirik ki <h4>(sərlövhə) içərisində <a> -nı (hiperlink) tapsın. Burada biz yalnız onu istəyirik ki, bir elementə baxaq Yəni, hər bir sətirdə bir sadə element olsun. İndi hələlik hər sətirdə bir başlıq vardır. Biz onu selektorumuzun funksiyası ilə qaytardığımız siyahının əvvəlindən götürürük Yadda saxlayın ki, DOM-da bəzi elementlərdə əsil mətn özü vardır, yəni hər hansı bir dildə işarələnmiş yox mətnin özünə [element].text syntax- dən istifadə edərək giriş tapırıq, nəhayət 9-cu sətirdə ScraperWiki konsoluna çap edirik. Əgər siz qazıyıcının işini pozsanız, kişik pəncərə açılaraq IAEA veb səhifəsindən hadisələırin adlarının siyahısını verməyə başlayacaqdır.

figs/incoming/04-DD.png
Şəkil 58. Fəaliyyətdə olan qazıyıcı (ScraperWiki)

İndi siz əsas qazıyıcının fəaliyyətini görə bilirsiniz. O veb səhifəni endirir.onu DOM formasına çevirir və sonra sizə imkan verir ki, lazım olan məzmunu çıxarasınız Bu skelet maketlə siz ScraperWiki-dən və Python sənədləşməsindən istifadə edərək qalan problemlərdən bəzilərini həll etməyə çalışa bilərsiniz:

  • Hər bir hadisənin başlığında əlaqə ünvanını tapa bilərsiniz?

  • CSS sinif (qrup) adından istifadə etməklə ayın tarixini və yerini gğstərən kiçik qutunu seçə elementin mətnini çıxara bilərsiniz?

  • ScraperWiki hər bir qazıyıcıya kiçik məlumat bazası təklif edir, beləliklə siz nəticələri hifz edə , sənədlərdən müvafiq nümunələri köçürə bilərsiniz, onları uyğunlaşdıraraq hadisə başlıqlarını, linkləri və tarixləri hifz edə bilərsiniz.

  • Hadisələr siyahısı çox səhifələrdən ibarətdir. Tarixi hadisələri götürmək üçün sox shəhifələri qazıya bilərsiniz?

Əgər bu çağırışlara əməl etmək istəyirsinizsə, onda ScraperWiki ətrafına bir nəzər salın: Mövcud qazıyıcılar haqqında faydalı nümunələr vardır; çox vaxt məlumat özü də həyəcanlandırıcı olur. Bu üsulla siz qazıyıcınızı qazımaqla başlamırsınız. Oxşar olanın birini seçin və onu öz probleminizə uyğunlaşdırın.

Fridrix Lindenberg, Açıq Bilik Fondu

ANA SƏHİFƏKİTABƏVVƏLKİSONRAKI