2012-02-14 41 views

回答

9

你有几个选项 - 快速和肮脏或正确的方法。快速和肮脏的方式(如果该标记被改变,这将轻松突破)看起来像

>>> 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'] 

很明显,你必须与打得到它与多个img标签的工作。

正确的方法,因为我觉得很糟糕,建议有人在CSS字符串上使用正则表达式:),使用CSS解析器。我刚刚在Google上找到并在PyPi上提供的图书馆,看起来可能会完成这项工作。

+2

我包含了糟糕的正则表达式方法,因为我意识到大量的抓取工作是一次性的,但是如果这段代码要存活超过一天,它应该使用更好的东西,比如CSS解析器。上面的例子又是非常易碎的。 – 2012-02-14 04:20:42