2012-02-14 15 views

Respuesta

9

Tienes un par de opciones: rápidas y sucias o de la manera correcta. La forma más rápida y sucia (que se rompen con facilidad si se cambia el margen de beneficio) se parece a

>>> from BeautifulSoup import BeautifulSoup 
>>> import re 
>>> soup = BeautifulSoup('<html><body><img style="background:url(/theRealImage.jpg) no-repate 0 0; height:90px; width:92px;") src="notTheRealImage.jpg"/></body></html>') 
>>> style = soup.find('img')['style'] 
>>> urls = re.findall('url\((.*?)\)', style) 
>>> urls 
[u'/theRealImage.jpg'] 

Obviamente, usted tendrá que jugar con eso para conseguir que funcione con múltiples img etiquetas.

De la manera correcta, ya que me sentiría mal al sugerir que alguien use expresiones regulares en una cadena de CSS :), usa un analizador de CSS. cssutils, una biblioteca que acabo de encontrar en Google y disponible en PyPi, parece que podría hacer el trabajo.

+2

Incluí el horrible método de expresiones regulares porque me doy cuenta de que una tonelada de trabajos de raspado son únicos, pero si este código va a vivir por más de un día, debería usar algo mejor, como un analizador de CSS. El ejemplo anterior es, de nuevo, muy frágil. –

Cuestiones relacionadas