[Plone-IT] beautifulsoup

Fabrizio Rota fabrizio.rota a gmail.com
Gio 8 Apr 2010 12:40:44 UTC


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 <
g.zanobini a arpat.toscana.it> 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 <yurj a alfa.it> 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
> Plone-IT a lists.plone.org
> 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
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.plone.org/pipermail/plone-plone-it/attachments/20100408/bdd8e704/attachment.html>


Maggiori informazioni sulla lista Plone-IT