Kirjoittaja Aihe: Scripti tiedon hakuun nettisivulta  (Luettu 4388 kertaa)

mykkman

  • Käyttäjä
  • Viestejä: 20
    • Profiili
Scripti tiedon hakuun nettisivulta
« : 16.08.11 - klo:08.10 »
Olisi tarvetta scriptille joka hakisi nesteen sivuilta (vaatii käyttäjätunnuksen ja salasanan) päivän lämmitysöljyn hinnan ja
listaisi sen tiedostoon.

Tieto on sivulla muodossa:  <span id="lblPaivanHinta">Päivän hinta: <b>1,0487 €/l</B><br></span>
Tuosta pitäisi siis saada päivittäin tuo hintatieto listattua samaan tiedostoon.

Olisiko kellään viihtimystä väsätä moista? Itellä kun ei ole hallussa minkäänlaista ohjelmointia, enkä löytänyt
haullakaan lähelle samanlaista mistä olis voinu muokkailla.

Kiitos

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11442
    • Profiili
    • Tomin kotisivut
Vs: Scripti tiedon hakuun nettisivulta
« Vastaus #1 : 16.08.11 - klo:13.56 »
bashillä jotenkin näin, mikäli se salasana kysellään tietyllä tavalla:
Koodia: [Valitse]
#!/bin/sh
wget -q -O - --user=käyttäjä --password=salasana http://neste.example.com/sivu | sed -n 's/.*Päivän hinta: <b>\([0-9,]*\) €\/l.*/\1/p' > tiedosto.txt
Tuosta voipi sitten muutella tarpeen mukaan. En muista pitääkö joku (muukin) noista sedin lausekkeen merkeistä escapettaa (lisätä eteen \-merkki), mutta katson lisää kotona. Jos haluat tuon aina lisäävän tiedon tuohon tekstitiedostoon lisää toinen > eli blaa blaa >> tiedosto.txt ja jos kirjautuminen hoidetaan nettisivulla olevalla kirjautumislaatikoilla (luultavasti) tarvittaneen eväste selaimesta. Lisäännen sen tähän myöhemmin, ellei joku tee sitä ensin.

Muokkaus: Joku tuossa sed-lausekkeessa mättää, voi olla ihan periaatekin. Siihen wget:iin on lisättävä --load-cookies=keksin_tiedosto jos keksi tarvitaan.
« Viimeksi muokattu: 16.08.11 - klo:18.18 kirjoittanut Tomin »
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

suppo84

  • Käyttäjä
  • Viestejä: 175
    • Profiili
Vs: Scripti tiedon hakuun nettisivulta
« Vastaus #2 : 16.08.11 - klo:15.58 »
Koodia: [Valitse]
#!/bin/sh
wget -q -O - --user=käyttäjä --password=salasana http://neste.example.com/sivu | sed 's/.*<span id="lblPaivanHinta">Päivän hinta: <b>1,0487 €\/l</B><br></span>.*//' > tiedosto.txt

Tämä on yksi syy miksi Linuxin konsoli on todella mahtava  ;D

mykkman

  • Käyttäjä
  • Viestejä: 20
    • Profiili
Vs: Scripti tiedon hakuun nettisivulta
« Vastaus #3 : 17.08.11 - klo:07.10 »
Koodia: [Valitse]
wget -q -O - --load-cookies=.config/chromium/Default/Cookies - --user=käyttäjä --password=salasana https://www.neste.fi/neste24/my_neste.aspx?path=2589;2655;2710;2711;2721;2724;2731 | sed -n 's/.*Päivän hinta: <b>\([0-9,]*\) €\/l.*/\1/p' > tiedosto.txt
Tuommoisella koodilla yritin, mutta heittää seuraavaa herjaa:

wget: muisti loppui
2655: komentoa ei löydy
2710: komentoa ei löydy
2711: komentoa ei löydy
2721: komentoa ei löydy
2724: komentoa ei löydy
2731: komentoa ei löydy

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Scripti tiedon hakuun nettisivulta
« Vastaus #4 : 17.08.11 - klo:11.04 »
Kävin katsomassa noita Nesteen sivuja, tein ensin tunnuksen itselleni, en näe hintatietoja missään.  Vaatii ilmeisesti käyttämään sivuilla jotain laskinta ensin ?   Vai näkyykö nuo sivut eri tavalla kun ei ole asiakasnumeroa ? 
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

mykkman

  • Käyttäjä
  • Viestejä: 20
    • Profiili
Vs: Scripti tiedon hakuun nettisivulta
« Vastaus #5 : 17.08.11 - klo:11.14 »
Joo siellä pitää mennä ensin laske öljytarjous ja siellä laitetaan mitä öljyä ja kuin paljon. Ne tallentuu sitten omiks asetuksiks ja sen jälkeen kun kirjautuu, niin se näyttää sit ton päivän hinnan.

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11442
    • Profiili
    • Tomin kotisivut
Vs: Scripti tiedon hakuun nettisivulta
« Vastaus #6 : 17.08.11 - klo:14.26 »
Koodia: [Valitse]
wget -q -O - --load-cookies=.config/chromium/Default/Cookies - --user=käyttäjä --password=salasana https://www.neste.fi/neste24/my_neste.aspx?path=2589;2655;2710;2711;2721;2724;2731 | sed -n 's/.*Päivän hinta: <b>\([0-9,]*\) €\/l.*/\1/p' > tiedosto.txt
Jätä nuo salasanat ja käyttäjänimet vipuineen pois ja laita tuo sivun nimi lainausmerkkeihin. Ehkä se auttaa (taaskaan en voi kokeilla, mutta kotona sitten).
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

retu

  • Käyttäjä
  • Viestejä: 949
    • Profiili
Vs: Scripti tiedon hakuun nettisivulta
« Vastaus #7 : 17.08.11 - klo:17.29 »
Kirjautuminen näyttää tapahtuvan sivulla olevan lomakkeen kautta eikä http:n get vasteen perusteella, joten curl lienee tarpeen. Siis koska vaatii lomakkeen post:auksen. Lomakkeen kentät (nimet) ja niiden arvot luetellaan -d parametrin perään &-merkillä eroteltuna. Voi myös olla tarpeen antaa lähdeosoite -e parametriä käyttäen. Jotain tälläista siis:
Koodia: [Valitse]
curl -k -d 'user=mykkman&password=TopSecret' -e https://www.neste.fi/neste24/my_neste.aspx??SelectAccessData=true https://www.neste.fi/neste24/my_neste.aspx??SelectAccessData=trueJos tulostuu oikean näköisiä tietoja, sitten sed putki perään.
« Viimeksi muokattu: 18.08.11 - klo:16.23 kirjoittanut retu »

mykkman

  • Käyttäjä
  • Viestejä: 20
    • Profiili
Vs: Scripti tiedon hakuun nettisivulta
« Vastaus #8 : 20.08.11 - klo:10.42 »
Jätä nuo salasanat ja käyttäjänimet vipuineen pois ja laita tuo sivun nimi lainausmerkkeihin. Ehkä se auttaa (taaskaan en voi kokeilla, mutta kotona sitten).

Ei auttanut tuokaan. Ei tosin tuolla tavalla ilmoita mitään virhettä, mutta myöskään tiedostoon ei tallennu mitään.

mykkman

  • Käyttäjä
  • Viestejä: 20
    • Profiili
Vs: Scripti tiedon hakuun nettisivulta
« Vastaus #9 : 30.08.11 - klo:17.12 »
Jos tulostuu oikean näköisiä tietoja, sitten sed putki perään.

Kyllä tulostui oikean näköistä tekstiä, mutta nyt on joku virhe tuossa sed rimpsussa. Herjas tuommoista: curl: (6) Couldn't resolve host 's'

Koodia: [Valitse]
curl -k -d 'user=Mykkman&password=salasana' -e https://www.neste.fi/neste24/my_neste.aspx??SelectAccessData=true https://www.neste.fi/neste24/my_neste.aspx??SelectAccessData=true sed -n 's/.*Päivän hinta: <b>\([0-9,]*\) €\/l.*/\1/p' > tiedosto.txt]

retu

  • Käyttäjä
  • Viestejä: 949
    • Profiili
Vs: Scripti tiedon hakuun nettisivulta
« Vastaus #10 : 30.08.11 - klo:18.42 »
No, herjaahan se, kun se putki eli "|"-merkki puuttuu siitä curl ja sed komentojen välistä. Laita
Koodia: [Valitse]
curl -k -d 'user=Mykkman&password=salasana' -e https://www.neste.fi/neste24/my_neste.aspx??SelectAccessData=true https://www.neste.fi/neste24/my_neste.aspx??SelectAccessData=true | sed -n 's/.*Päivän hinta: <b>\([0-9,]*\) €\/l.*/\1/p' > tiedosto.txt]

mykkman

  • Käyttäjä
  • Viestejä: 20
    • Profiili
Vs: Scripti tiedon hakuun nettisivulta
« Vastaus #11 : 30.08.11 - klo:19.01 »
Oho, katos niin puuttui merkki  :-[

Nyt ei valita mitään, mutta tiedostoon ei tulostu mitään. Konsoliin tulostaa seuraavan:


% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
102  2840    0  2840    0    30   3394     35 --:--:-- --:--:-- --:--:--  5620

retu

  • Käyttäjä
  • Viestejä: 949
    • Profiili
Vs: Scripti tiedon hakuun nettisivulta
« Vastaus #12 : 31.08.11 - klo:16.03 »
^ nuo konsolitulosteet on vaan curlin antamia tilatietoja.

Tiedostoon ei tule mitään, jos sed komento ei löydä hintaa. Tarvii vissiin lisäviilausta.

Aja curl litania ilman sed komentoa ja katso missä muodossa hinta on html koodin seassa. Postaa se rivi tänne, niin joku säätää sinulle sed parametrit kohdalleen.

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Scripti tiedon hakuun nettisivulta
« Vastaus #13 : 31.08.11 - klo:18.17 »
Tässä olisi yksinkertainen "suodatin" joka etsii ensin "€/L" rivit ja hukkaa kaiken muun paitsi numerot pois:

Koodia: [Valitse]
| grep "€/l" -i | tr -d -c '[:digit:]' | xargs
Ainut puute että desimaalipilkku tippuu myös samassa kyydissä, jos tuo haittaa niin tämä hieman pidempi versio jättää jäljelle numerot ja desimaalipilkun:

Koodia: [Valitse]
| grep "€/l" -i| tr -d -c '[0123456789,]'| xargs
Edit:
Viritin tuon Nesteen sivun itselleni näyttämään litrahinnan ja kokeilin mitä tuo "curl" yllä hakee, näyttäisi jäävän haku lyhyeksi eli ei näy kuin osa sivusta.
« Viimeksi muokattu: 31.08.11 - klo:19.47 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.

mykkman

  • Käyttäjä
  • Viestejä: 20
    • Profiili
Vs: Scripti tiedon hakuun nettisivulta
« Vastaus #14 : 31.08.11 - klo:19.25 »
Aja curl litania ilman sed komentoa ja katso missä muodossa hinta on html koodin seassa. Postaa se rivi tänne, niin joku säätää sinulle sed parametrit kohdalleen.

Ei tulostunu mitään hintatietoja. Liitin tiedoston liitteenä.

[ylläpito on poistanut liitteen]

ajaaskel

  • Palvelimen ylläpitäjä
  • Käyttäjä
  • Viestejä: 3401
    • Profiili
Vs: Scripti tiedon hakuun nettisivulta
« Vastaus #15 : 31.08.11 - klo:19.50 »
Joo, huomasin saman eli tuo "curl" ei tiputa sivusta kuin osan, itselläni tippui samanlainen osuus kuin tuossa liitetiedostossa on.  Jos tuon sivun saisi tippumaan kokonaan niin tuo toimisi jo.   En tiedä mitä maustetta tuonne "curl" :in perään vielä pitäisi antaa että se tiputtaisi kaiken.
« Viimeksi muokattu: 31.08.11 - klo:19.57 kirjoittanut ajaaskel »
Autamme ilolla ja ilmaiseksi omalla ajallamme.  Ethän vaadi, uhoa tai isottele näin saamasi palvelun johdosta.