2011-08-26 19 views
7

estoy usando hermosa sopa y estoy escribiendo un rastreador y tengo el siguiente código en él:reemplazar caracteres que no trabajan en pitón

print soup.originalEncoding 
       #self.addtoindex(page, soup) 


       links=soup('a') 
      for link in links: 

       if('href' in dict(link.attrs)):     
        link['href'].replace('..', '') 
        url=urljoin(page, link['href']) 
        if url.find("'") != -1: 
         continue 
        url = url.split('?')[0] 
        url = url.split('#')[0] 
        if url[0:4] == 'http': 
         newpages.add(url) 
     pages = newpages 

El link['href'].replace('..', '') se supone que arreglar los enlaces que salen como ../contact /orderform.aspx, ../contact/requestconsult.aspx, etc. Sin embargo, no está funcionando. Los enlaces aún tienen el "..." ¿Hay algo que me falta?

Respuesta

31

string.replace() devuelve la cadena con los valores reemplazados. No modifica el original así que haga algo como esto:

link['href'] = link['href'].replace("..", "") 
2

No es un reemplazo en el lugar. Que tiene que hacer:

link['href'] = link['href'].replace('..', '') 

Ejemplo:

a = "abc.." 
print a.replace("..","") 
'abc' 
print a 
'abc..' 
a = a.replace("..","") 
print a 
'abc' 
8

string.replace() devuelve una copia de la cadena con caracteres reemplazados, como cadenas en Python son inmutables. Pruebe

s = link['href'].replace("..", '') 
url=urljoin(page, s) 
Cuestiones relacionadas