2014-05-12 1 views
6

Ho una pagina HTML come:Come posso rimuovere "& nbsp" dai contenuti html?

<div class="theater"> 
    <div class="desc" id="theater_16109207495969942346"> 
     <h2 class="name"><a href="/movies?near=pune&amp;tid=df8f66de0a592b4a" id="link_1_theater_16109207495969942346">Esquare Victory Camp</a></h2> 
     <div class="info">site no 2429,general thimayya road, camp contonment,oppositekayani bakery, Pune - 020 2613 2975 
      <a class="fl" href="" target="_top"></a> 
     </div> 
    </div> 
    <div class="showtimes"> 
     <div class="show_left"> 
      <div class="movie"> 
       <div class="name"><a href="/movies?near=pune&amp;mid=1cdcf90092189400">Hawaa Hawaai</a> 
       </div><span class="info">Drama - Hindi</span> 
       <div class="times"><span style="color:#666"><span style="padding:0 "></span> 
        <!-- -->10:30am</span><span style="color:#666"><span style="padding:0 "> &amp;nbsp</span> 
        <!-- -->3:45</span><span style="color:#666"><span style="padding:0 "> &amp;nbsp</span> 
        <!-- -->6:00</span><span style="color:"><span style="padding:0 "> &amp;nbsp</span> 
        <!-- -->8:30pm</span> 
       </div> 
      </div> 
     </div> 
     <div class="show_right"> 
      <div class="movie"> 
       <div class="name"><a href="/movies?near=pune&amp;mid=6b59ad39004d895b">The Amazing Spider Man 2</a> 
       </div><span class="info">Action/Adventure/Thriller - English - <a class="fl" href="/url?q=http://www.youtube.com/watch%3Fv%3DSCjCk59PIzw&amp;sa=X&amp;oi=movies&amp;ii=0&amp;usg=AFQjCNGpVM5U04h0acABA7eApb6EIO4Ejw">Trailer</a></span> 
       <div class="times"><span style="color:#666"><span style="padding:0 "></span> 
        <!-- -->1:00</span><span style="color:"><span style="padding:0 "> &amp;nbsp</span> 
        <!-- -->10:45pm</span> 
       </div> 
      </div> 
     </div> 
     <p class="clear"></p> 
    </div> 
</div> 

Dove possiamo vedere che abbiamo &amp;nbsp in molti luoghi. Ci sono anche molti altri caratteri Unicode. Voglio estrarre il contenuto di questa pagina. Quello che sto facendo è:

def removeNonAscii(s): return "".join(i for i in s if ord(i)<128) 

myName = soup.findAll("div", {"class" : "theater"}) 
for x in myName: 
    xt = str(x) 
    print removeNonAscii(xt) 
    print "<br>" 

Il Risultato:

Esquare Victory Camp 
site no 2429,general thimayya road, camp contonment,oppositekayani bakery, Pune - 020 2613 2975 
Hawaa Hawaai 
Drama - Hindi 
10:30am &nbsp3:45 &nbsp6:00 &nbsp8:30pm 
The Amazing Spider Man 2 
Action/Adventure/Thriller - English - Trailer 
1:00 &nbsp10:45pm 

Tutto sembra buono, tranne &nbsp. Ho provato a sostituire & nbsp e ho cercato anche altre soluzioni, ma non ho ancora soluzione. Penso che &nbsp senza ; stia creando problemi. In che modo è possibile rimuovere &nbsp?

+0

sono i personaggi già venuta a voi doppio scappato in quel modo? Se puoi, la scelta migliore è iniziare con buoni dati. – Dan

+0

Sì. I personaggi sono così solo Non ho altra opzione per lavorarci. Esiste un metodo per eliminare quei caratteri unicode '& nbsp'? – impossible

risposta

5

A seconda della fase di elaborazione in cui si desidera rimuovere lo spazio non sfavorevole, può essere abbastanza semplice. Per esempio quando si elabora il frammento di codice HTML che hai fornito si può semplicemente rimuovere la stringa "& nbsp" dagli elementi di testo:

s = """your HTML""" 
soup = BeautifulSoup(s) 
texts = soup.find_all(text=True) 
for t in texts: 
    newtext = t.replace("&nbsp", "") 
    t.replace_with(newtext)