Ho risolto qualche giorno fa, ma credo che non sarà la soluzione più bella
da vedere....
Il metodo esterno è questo
def prendi_url_meteo(self):
import urllib2
from BeautifulSoup import BeautifulSoup
response = urllib2.urlopen('http://it.aprs.fi/weather/IW2OII-3')
soup = BeautifulSoup(response)
lista = soup.findAll('td')
for index in range(len(lista)):
ripulito = lista[index].renderContents()
lista[index] = ripulito
return lista
Il template che impagina in un portlet è questo:
<metal:block define-macro="portlet">
<h2> Stazione meteo </h2>
<div tal:define="dati_meteo python:context.estrai_dati_meteo(); data_grezza
python:dati_meteo[2].split(' ',8); previsione
python:dati_meteo[0].split('/',2); temperatura python:dati_meteo[3]; umidita
python:dati_meteo[5]; pressione python:dati_meteo[6]; vento
python:dati_meteo[7]; pioggia python:dati_meteo[8]">
<p> Previsione: <span
tal:content="python:previsione[1].replace('Prev.','')">previsione</span><br/>
Temperatura: <span tal:content="temperatura">temperatura</span><br/>
Umidità: <span tal:content="umidita">umidita</span><br/>
Pressione: <span tal:content="pressione">pressione</span><br/>
Vento: <span tal:content="vento">vento</span><br/>
Pioggia: <span tal:content="pioggia">pioggia</span><br/>
Dati meteo rilevati il giorno <span
tal:content="python:data_grezza[0]">data</span> alle ore <span
tal:content="python:data_grezza[6]">ora</span>.
</p>
<ul>
<li><a href="http://aprs.fi/weather/IW2OII-3?range=week">Grafici ultima
settimana</a></li>
<li><a href="http://aprs.fi/weather/IW2OII-3?range=month">Grafici ultimo
mese</a></li>
<li><a href="http://aprs.fi/weather/IW2OII-3?range=year">Grafici ultimo
anno</a></li>
</ul>
</div>
</metal:block>
L'effetto finale è il portlet in questa pagina:
http://www.isisromero.it/la-scuola/organizzazione/cosa/dipartimenti/dip_TIC/stazione-meteo/il-tempo-del-romero
Tutto ancora da rifinire....
a presto
faber
Il giorno 06 aprile 2010 12.40, Giacomo Zanobini <
[email protected]> ha scritto:
> Il 02/04/2010 13.56, Fabrizio Rota ha scritto:
>
> In linea di principio ho risolto:
> faccio un ciclo che estrae dalla lista che contiene il codice HTML, gli
> applico la funzione renderContents() che butta i tag e tiene i contenuti e
> ricreo una lista "pulita".
>
> Grazie di tutte le dritte!
>
>
> faber
>
> Il giorno 02 aprile 2010 11.35, Yuri <[email protected]> ha scritto:
>
>> Fabrizio Rota ha scritto:
>>
>> [6.1 °C, 50 %, 1022.0 mbar, Est 112° 0.0 m/s (Raffiche 0.0 m/s), 0.0 mm
>>> Ultima ora, 2.5 mm Ultime 24 ore]
>>> Il problema è che se estraggo per esempio il primo elemento con il
>>> codice:
>>>
>>
> non ho provato, ma così ad occhio, mi sembra di capire che consideri il
> risultato come una lista di 6 elementi.
> Non è che semplicemente il risultato è una lista di un solo elemento? (una
> stringa di testo che potresti separare dove ci sono le virgole, senza
> passare da renderContents())
>
> For example, '1,2,3'.split(',') returns ['1', '2', '3'],
>
>
> comunque, se ti serve una lista, secondo me è meglio apportare le modifiche
> allo script
> (sarebbe possibile vederlo? mi interesserebbe alquanto, per prendere
> spunto).
>
> A suo tempo, mi ero guardato il codice di "windowz"..... un buon esempio
> che usa urllib per prendere pagine intere.
>
>
> Giacomo
>
>
>
>
>
>
> _______________________________________________
> Plone-IT mailing list
> [email protected]
> http://lists.plone.org/mailman/listinfo/plone-it
> http://www.nabble.com/Plone---Italy-f21728.html
>
--
Fabrizio
--------------------
"Life is what happens to you while you're busy making other plans" - J.
Lennon
_______________________________________________
Plone-IT mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/plone-it
http://www.nabble.com/Plone---Italy-f21728.html