Python yra tiek viena populiariausių programavimo kalbų, tiek populiarus pasirinkimas rašyti įrankius automatiniui duomenų nuskaitymui (dėl lankstumo).
Intro
Šio įžanginio kurso tikslas yra išmokyti konkrečių praktinių dalykų, kurių reikės mokamoms užduotims, susijusioms su duomenų nuskaitymu.
Užduotims turėtų užtektį pagrindų. Jeigu visgi nesate susipažinę su programavimo pagrindais (ciklai, sąlyginiai sakiniai) ar Python kalba, kviečiame naudotis begalę nemokamų interneto šaltinių ir pasiekti bazinį žinių lygį.
- Python oficialus tutorial
Parašykite pirmąją savo programą
Rekomenduojame vieną iš pagrindinių kelių – arba atsisiųsti interaktyvią programavimo aplinką (daugiau galimybių), arba naudoti interaktyvų programavimo įrankį “Replit” (greičiau pradėti).
Greitam išbandymui puikiai tiks Replit įrankis. Atidarykite replit svetainę ir susikurkite naują paskyrą bei sukurkite pirmąją veikiančią programą – išspausdinančią ekrane žodžius “Hello World”


Kaip ilgalaikį sprendimą rekomenduojame susidiegti programavimo aplinką savo kompiuteyje. Yra daug galimybų variantų priklausomai nuo operacinės sistemos, bet galimas toks variantas:
- Python palaikantis teksto redaktorius, pvz. Sublime
- Įdiegtos Python core bibliotekos
- Terminalas per kurį leisite programas


Duomenų nuskaitymas
Sukurkime pirmą praktiškai naudinga programą, kuri nuskaitytų tam tikrus reikalingus duomenis. Pirmai užduočiai, išspausdinkime ekrane mūsų tinklaraščio http://blog.citynow.org įrašų antraštes, t.y.:
> python hello.py
Uptown Park 2
Palangos Ašis
...
Kiekvienas interneto puslapis viduje atvaizduotas specialia HTML kalba, kuri ne tik saugo tekstą, bet ir apibūdina struktūrą, stilių, ir pan. Tad turime nuskaityti visą HTML turinį bei jame ieškoti specialių žymų.
Per Chrome naršyklę, atsidarykite lango dalį kuri rodytų HTML kodą (View → Developer → Developer Tools → Elements). Suraskite kur HTML kode atvaizduojamas norimas elementas. Tai patogu padaryti su specialiu mygtuku kuris sufokusuoja HTML tekstą.

Šiuo atveju antraštes identifikuoja tai, kad jos yra “h2” (heading) elemento su stiliumi “entry-title” viduje. Kodo lange paspaudus dešinį pelės mygtuką ties norimu (h2) elementu, pažymėti “Edit as HTML” ir matome tokį tekstą:
<h2 class="entry-title"><a href="http://blog.citynow.org/2022/06/29/uptown-park-2/">Uptown Park 2</a></h2>
Kaip matome turime dvi kintamas dalis: geltonai pažymėta antraštė kurias norime paimti iš puslapio, o žaliai – nuoroda kur veda paspaudus ant antraštės (kuri šiai užduočiai neaktuali).
Aprašykime šią struktūrą naudodami programavimo standartiniu įrankiu – regular expression (žr. atskirą tutorialą)
<h2 class="entry-title"><a href=".*">(.*)</a></h2>
Taškas žymi bet kokį simbolį. Taškas su žvaigždute žymi kad bet koks simbolis gali pasikartoti bet kiek kartų. Jeigu taškas su žvaigždute apskliausta, tai pažymi kad šios dalies struktūroje ieškome ir norime įtraukti į rezultatus. Lentelėje apačioje pateikti dažniausiai robotukuose panaudotinus sintakės elementus:
| Regular expression elementas | Panaudojimas |
| .* | Bet kokia simbolių seka (nesvarbi) |
| (.*) | Bet kokia simbolių seka (panaudotina) |
| \r+ | Tarpų, tuščių simbolių seka (nesvarbi) |
Apjunkime išmoktus dalykus ir parašykime programą :
import requests
import re
# fetch HTML code from website
req = requests.get('http://blog.citynow.org')
# create regular expression to find article titles
r = re.compile('<h2 class="entry-title"><a href=".*>(.*)</a></h2>')
# find all results in website content matching re
results = r.findall(req.content)
# print results to the screen
print results
Paleidus programą pamatysime visų antraščių sąrašą:
> python hello.py
['Go-Life atviros durys', 'Uptown Park 2']
Pabaigai modifikuokime kodą vietoj sąrašo atspausdinimo su print, eisime per kiekvieną elementą ir atspausdinsime atskirose eilutėse:
results = r.findall(req.content)
for result in results:
print result
Ekrane matysime rezultatus:
> python hello.py
Go-Life atviros durys
Uptown Park 2
Išbandykite galutinį rezultatą interaktyviai.
Tolimesnis žingsnis
Kitu žingsniu išmoksime perduoti platformai ir patikrinti mūsų robotuko rezultatus. Pereiti į kitą žingsnį.





