Home / Uncategorized / Robotukai: pagrindai

Robotukai: pagrindai

1
Pagrindai
2
Rezultatai
3
Struktūros
4
Pratimas
5
Uždirbk €€€

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į.

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”

Pradinis Replit puslapis: tęskite spausdami “Start coding”
Replit registracijos forma
Pirmo kodo gabalo sukūrimas per Replit.

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
Sublime kodo teksto redaktorius
Terminalo paleidimas (MAC)

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ą.

Puslapio HTML kodo peržiūra

Š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 elementasPanaudojimas
.*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į.

Leave a Reply

Your email address will not be published. Required fields are marked *