Haluaisin tehdä ohjelman tai sovelluksen, jolla saisin napattua internetin nettisivulta muuttuvan tiedon (sana) tai useita tietoja (useita sanoja) johonkin Macin ohjelmaan. Macissä jatkaisin sitten saadun tiedon analysointia esim laskemalla sanojen lukumäärän jne jne. Mikä ohjelmointitapa olisi Macissa tähän paras? Windows-puolella yksi mahdollisuus on mm Excel + Visual Basic, jolloin avaan internet sivun ensin Excelissä, kopioin sivulta haluamani tiedon ja lisään sen sitten Worksheetin tietokantaan laskentaa ja analysointia varten.
Ehdotuksia otetaan mielellään vastaan. Kiitos jo etukäteen.
Internet-sivulta tietoa Mac-sovellukseen.
Xcode, Mac OS X Server sekä muuta hauskaa ja hyödyllistä
5 viestiä
• Sivu 1/1
-
- Viestit: 94
- Liittynyt: 24.1.2006 klo 18.01
Internet-sivulta tietoa Mac-sovellukseen.
Viesti Kirjoittaja tisshann »
-
- Viestit: 937
- Liittynyt: 5.6.2006 klo 13.48
- Paikkakunta: Helsinki
Re: Internet-sivulta tietoa Mac-sovellukseen.
Viesti Kirjoittaja morbusg »
En nyt ihan äkkiseltään keksi mitä järkeä on hakea joltain sivulta jotain sanaa, koska jos se pitää antaa syötteeksi, niin samantienhän sen voi palauttaa ilman mitään internet-sivu hakujakin.
Tällä palautuu rivi(t) jolla sana: (Päätteeseen)
Tällä kaikki rivit sanojen "sana1" ja "sana2" väliltä:
jnejne.
Mutta kun se nyt on html:ää, niin jotkut esim. laittavat koko sivun koodin tyyliin yhdelle riville, eli ei tuolla välttämättä saavuteta haluttua lopputulosta.
Tuota voi sitten ketjuttaa vielä jollekkin html-parsettajallekkin tietty.
Tai lähtökohtaisestikkin voidaan käyttää parsettajaa, ilman mitään em. ohjelmia, riippuen siitä mitä haluaa tehdä. Tai sitten voi parsettaa lennosta itse, ei sekään ole mahdotonta, saatikka vaikeaa.
Ja sitten tuon sanojen lukumääränkin voi ketjuttaa siihen päälle päätteeksi.
Tällä palautuu rivi(t) jolla sana: (Päätteeseen)
Koodi: Valitse kaikki
# curl -s domain.tld/polku/sivu.html | grep 'sana'
Koodi: Valitse kaikki
# curl -s domain.tld/polku/sivu.html | awk '/sana1/, /sana2/'
Mutta kun se nyt on html:ää, niin jotkut esim. laittavat koko sivun koodin tyyliin yhdelle riville, eli ei tuolla välttämättä saavuteta haluttua lopputulosta.
Tuota voi sitten ketjuttaa vielä jollekkin html-parsettajallekkin tietty.
Tai lähtökohtaisestikkin voidaan käyttää parsettajaa, ilman mitään em. ohjelmia, riippuen siitä mitä haluaa tehdä. Tai sitten voi parsettaa lennosta itse, ei sekään ole mahdotonta, saatikka vaikeaa.
Ja sitten tuon sanojen lukumääränkin voi ketjuttaa siihen päälle päätteeksi.
Koodi: Valitse kaikki
# curl -s domain.tld/polku/sivu.html | grep 'sana' | wc -w
-
- Viestit: 94
- Liittynyt: 24.1.2006 klo 18.01
Re: Internet-sivulta tietoa Mac-sovellukseen.
Viesti Kirjoittaja tisshann »
Sivulla, josta tätä mainitsemaani "sanaa" haluan kaapata on seuraavanlainen koodin pätkä: <span id="TUOTE_ID" class="tieto">
Tämä "tieto" vaihtuu/päivittyy jatkuvasti ennalta määräämättömän ajan kuluessa. Tieto ei päivity koodiin, vaan ainoastaan selaimen näkymään. Minä siis haluan kerätä tuon tiedon, jotta pystyn laskemaan esim sanan "lumilapio" tms esiintymismäärän. Kyseisen nettisivu on minun ymmärryksen mukaan tehty käyttäen php:tä ja javascriptiä.
Laitan tähän linkin, joka varmaankin auttaa asian ymmärtämisessä. http://visualbasic.about.com/od/learnvb ... excela.htm
Haluaisin siis vastaavaa tulosta, mutta Mac koneeseen. Sovellus ei saisi myöskään olla raskas, eikä liiaksi laajakaistaa rasittavaa. Excelissä (PC) onnistuu kyllä sivun lataaminen ensin Worksheetille, mutta sekään ei pysty noukkimaan tuota <span id="TUOTE_ID" class="tieto"> sylkäisemää dataa. Ja vaikka tieto jollain konstilla siten onnistuisikin, muodostuisi jatkuva reaaliaikainen tiedon nappaus hitaaksi. Hitaus korostuisi entisestään, koska haluan hakea tietoa usealta sivulta samanaikaisesti.
Kiitoksia muuten aikaisemmasta vastauksestasi.
Tämä "tieto" vaihtuu/päivittyy jatkuvasti ennalta määräämättömän ajan kuluessa. Tieto ei päivity koodiin, vaan ainoastaan selaimen näkymään. Minä siis haluan kerätä tuon tiedon, jotta pystyn laskemaan esim sanan "lumilapio" tms esiintymismäärän. Kyseisen nettisivu on minun ymmärryksen mukaan tehty käyttäen php:tä ja javascriptiä.
Laitan tähän linkin, joka varmaankin auttaa asian ymmärtämisessä. http://visualbasic.about.com/od/learnvb ... excela.htm
Haluaisin siis vastaavaa tulosta, mutta Mac koneeseen. Sovellus ei saisi myöskään olla raskas, eikä liiaksi laajakaistaa rasittavaa. Excelissä (PC) onnistuu kyllä sivun lataaminen ensin Worksheetille, mutta sekään ei pysty noukkimaan tuota <span id="TUOTE_ID" class="tieto"> sylkäisemää dataa. Ja vaikka tieto jollain konstilla siten onnistuisikin, muodostuisi jatkuva reaaliaikainen tiedon nappaus hitaaksi. Hitaus korostuisi entisestään, koska haluan hakea tietoa usealta sivulta samanaikaisesti.
Kiitoksia muuten aikaisemmasta vastauksestasi.
-
- Viestit: 937
- Liittynyt: 5.6.2006 klo 13.48
- Paikkakunta: Helsinki
Re: Internet-sivulta tietoa Mac-sovellukseen.
Viesti Kirjoittaja morbusg »
No esimerkiksi yhdenlaista parsettajaa käyttäen:
Tallenna tiedostoon, ja suorita päätteellä: # ruby esim.rb
Tai sitten voidaan vielä jatkaa tuolla curl -pohjallakin:***
Eli ensin haetaan haluttu sivu, sitten haetaan sen sisältä rivejä joilta löytyy tuo span -elementti tuolla "tieto" -luokalla, ja sitten vaan poistetaan kaikki html-tagit. Pelkän sivun voisi vielä cachettaa jonnekkin talteen, ja seuraavaa kyselyä tehtäessä saattaisi olla mahdollista tehdä vertailu (headereilla) että onko mikään muuttunut, ja vain jos on, hakea tietoa uudelleen. Mutta se menee jo kikkailuksi.
Perl olis varmaan aika ihanteellinen tähän kohtaan, mutta itse en osaa sitä.
Kun taas verrataan VBScript+Excel+IE -kombinaatioon, niin kaikkien em. pitäisi olla kevyempiä, joska VB:llä luodaan aina uusi kokonainen IE-objekti jokaista linkkiä varten, puhumattakaan että ohjelmat itse eivät ole keveydeltään verrattavissa komentorivipohjaisiin ohjelmiin jo pelkästään ikkunoinnin edellyttämien tarpeiden vuoksi.
*** Sed on rivi-orientoitunut ohjelma, joten se palauttaisi silloin ympäröivienkin tagien sisällön jos ne ovat samalla rivillä.
EDIT: sen verran haluisin vielä tuosta reaaliaikaisuudesta lätistä, että htt-protokolla ei lienne se otollisin millekkään reaali-aikaiselle. Eli aina pyyntöön vastataan esim. koko sivulla. Sitten on tietty vaihtoehtona XMLHttpRequest mikäli tuon sivun taustalla pyörivä ohjelma kys. tyyppisiin pyyntöihin osaa vastata. Se olisi ideaalia sikäli että ei tarvitsisi tosiaan pyytää kun vain ja ainoastaan se muuttuva data.
EDIT2:
(ylläoleva kaikki yhdellä rivillä) Grep palauttaa vain osumat, ja wc (tulee sanoista Word Count) palauttaa parametrilla "-l" vain rivien määrän (eli montako osumaa).
Koodi: Valitse kaikki
# esim.rb
require 'rubygems'
require 'hpricot'
require 'open-uri'
query_page = Hpricot(open("http://domain.tld/polku/sivu.html"))
haettu_sana = (query_page/".tieto").inner_html
puts haettu_sana
Tai sitten voidaan vielä jatkaa tuolla curl -pohjallakin:
Koodi: Valitse kaikki
# curl -s -m 3 'http://domain.tld/polku/sivu.html' | grep -e '<span.*class="tieto">' | sed -e :a -e 's/<[^>]*>//g;/</N;//ba'
Eli ensin haetaan haluttu sivu, sitten haetaan sen sisältä rivejä joilta löytyy tuo span -elementti tuolla "tieto" -luokalla, ja sitten vaan poistetaan kaikki html-tagit. Pelkän sivun voisi vielä cachettaa jonnekkin talteen, ja seuraavaa kyselyä tehtäessä saattaisi olla mahdollista tehdä vertailu (headereilla) että onko mikään muuttunut, ja vain jos on, hakea tietoa uudelleen. Mutta se menee jo kikkailuksi.
Perl olis varmaan aika ihanteellinen tähän kohtaan, mutta itse en osaa sitä.
Kun taas verrataan VBScript+Excel+IE -kombinaatioon, niin kaikkien em. pitäisi olla kevyempiä, joska VB:llä luodaan aina uusi kokonainen IE-objekti jokaista linkkiä varten, puhumattakaan että ohjelmat itse eivät ole keveydeltään verrattavissa komentorivipohjaisiin ohjelmiin jo pelkästään ikkunoinnin edellyttämien tarpeiden vuoksi.
Oletko nyt aivan varma? Ainut ensimmäisenä päähän pälkähtävä tilanne jossa noin voisi olla, olisi että kys. tieto generoidaan aina asiakaspäässä suoritettavalla javascriptillä, ja uskallan epäillä ettei tässä ole kyse siitä.tisshann kirjoitti:Tieto ei päivity koodiin, vaan ainoastaan selaimen näkymään.
*** Sed on rivi-orientoitunut ohjelma, joten se palauttaisi silloin ympäröivienkin tagien sisällön jos ne ovat samalla rivillä.
EDIT: sen verran haluisin vielä tuosta reaaliaikaisuudesta lätistä, että htt-protokolla ei lienne se otollisin millekkään reaali-aikaiselle. Eli aina pyyntöön vastataan esim. koko sivulla. Sitten on tietty vaihtoehtona XMLHttpRequest mikäli tuon sivun taustalla pyörivä ohjelma kys. tyyppisiin pyyntöihin osaa vastata. Se olisi ideaalia sikäli että ei tarvitsisi tosiaan pyytää kun vain ja ainoastaan se muuttuva data.
EDIT2:
tisshann kirjoitti:Minä siis haluan kerätä tuon tiedon, jotta pystyn laskemaan esim sanan "lumilapio" tms esiintymismäärän.
Koodi: Valitse kaikki
curl -s 'http://hopeinenomena.net/viewtopic.php?f=40&t=120721&p=653241#p653241' | grep -o 'lumilapio' | wc -l
-
- Viestit: 94
- Liittynyt: 24.1.2006 klo 18.01
Re: Internet-sivulta tietoa Mac-sovellukseen.
Viesti Kirjoittaja tisshann »
Kiitos vastauksestasi
Täytyy jossain vaiheessa kokeilla.

5 viestiä
• Sivu 1/1
Palaa sivulle “Ohjelmointi, skriptit ja palvelimet”
Hyppää
- Yleiset aiheet
- ↳ Ajankohtaista Apple-maailmasta
- ↳ Käyttöjärjestelmät
- ↳ Ohjelmat
- ↳ Yleiskeskustelu
- Mac ja oheislaitteet
- ↳ Yleiskeskustelu laitteista
- ↳ MacBook, MacBook Pro ja MacBook Air
- ↳ iMac
- ↳ Mac mini
- ↳ Mac Pro ja Mac Studio
- ↳ Ongelmia Macin kanssa?
- iPhone, iPad ja Apple Watch
- ↳ iPhone-, iPad- ja Apple Watch -laitekeskustelu
- ↳ iPhone-, iPad- ja Apple Watch -ohjelmat sekä iOS
- ↳ Ongelmia iPhonen, iPadin tai Apple Watchin kanssa?
- Huviksi ja hyödyksi
- ↳ Off-topic
- ↳ Kuva ja graafinen suunnittelu
- ↳ Audio ja musiikki
- ↳ Video, televisio ja elokuvat
- ↳ Pelit ja pelaaminen
- ↳ Ohjelmointi, skriptit ja palvelimet
- ↳ Tietoturva ja varmuuskopiointi
- ↳ Verkot, mobiilidata ja muut puhelimet
- ↳ Retronurkka
- ↳ Foorumin ylläpito
- Kauppapaikka
- ↳ Myydään Mac
- ↳ Myydään iPhone, iPad ja iPod
- ↳ Myydään muut Applen tuotteet
- ↳ Myydään muuta tietotekniikkaa
- ↳ Ostetaan Mac
- ↳ Ostetaan iPhone, iPad ja iPod
- ↳ Ostetaan muut Applen tuotteet
- ↳ Ostetaan muuta tietotekniikkaa
- ↳ Vaihdetaan, annetaan, työtä haetaan ja tarjotaan
- ↳ Kauppapaikan keskustelu ja hintavinkit